for (Dependency extraWarDependency : extraWars) {
ArtifactRequest request = new ArtifactRequest();
request.setArtifact(new DefaultArtifact(extraWarDependency.getGroupId(), extraWarDependency
.getArtifactId(), extraWarDependency.getType(), extraWarDependency.getVersion()));
request.setRepositories(projectRepos);
ArtifactResult result;
try {
result = repoSystem.resolveArtifact(repoSession, request);
} catch (ArtifactResolutionException e) {
throw new MojoExecutionException(e.getMessage(), e);
}
File extraWarFile = result.getArtifact().getFile();
aos.putArchiveEntry(new JarArchiveEntry(extraWarFile.getName()));
try (InputStream is = Files.newInputStream(extraWarFile.toPath())) {
IOUtils.copy(is, aos);
}
aos.closeArchiveEntry();
}
}
// Add extraResources into the jar. Folder /extra
if (extraResources != null) {
for (Resource extraResource : extraResources) {
DirectoryScanner directoryScanner = new DirectoryScanner();
directoryScanner.setBasedir(extraResource.getDirectory());
directoryScanner.setExcludes(extraResource.getExcludes().toArray(
new String[extraResource.getExcludes().size()]));
if (!extraResource.getIncludes().isEmpty()) {
directoryScanner.setIncludes(extraResource.getIncludes().toArray(
new String[extraResource.getIncludes().size()]));
} else {
// include everything by default
directoryScanner.setIncludes(new String[] { "**" });
}
directoryScanner.scan();
for (String includeFile : directoryScanner.getIncludedFiles()) {
aos.putArchiveEntry(new JarArchiveEntry(Runner.EXTRA_RESOURCES_DIR + "/" + includeFile));
Path extraFile = Paths.get(extraResource.getDirectory(), includeFile);
try (InputStream is = Files.newInputStream(extraFile)) {
IOUtils.copy(is, aos);
}
aos.closeArchiveEntry();
}
}
}
Set<String> includeArtifacts = new HashSet<>();
includeArtifacts.add("org.apache.tomcat:tomcat-jdbc");
includeArtifacts.add("org.apache.tomcat.embed:tomcat-embed-core");
includeArtifacts.add("org.apache.tomcat.embed:tomcat-embed-logging-juli");
includeArtifacts.add("org.yaml:snakeyaml");
includeArtifacts.add("com.beust:jcommander");
if (includeJSPSupport) {
includeArtifacts.add("org.apache.tomcat.embed:tomcat-embed-jasper");
includeArtifacts.add("org.eclipse.jdt.core.compiler:ecj");
}
for (Artifact pluginArtifact : pluginArtifacts) {
String artifactName = pluginArtifact.getGroupId() + ":" + pluginArtifact.getArtifactId();
if (includeArtifacts.contains(artifactName)) {
try (JarFile jarFile = new JarFile(pluginArtifact.getFile())) {
extractJarToArchive(jarFile, aos);
}
}
}
if (extraDependencies != null) {
for (Dependency dependency : extraDependencies) {
ArtifactRequest request = new ArtifactRequest();
request.setArtifact(new DefaultArtifact(dependency.getGroupId(), dependency.getArtifactId(),
dependency.getType(), dependency.getVersion()));
request.setRepositories(projectRepos);
ArtifactResult result;
try {
result = repoSystem.resolveArtifact(repoSession, request);
} catch (ArtifactResolutionException e) {
throw new MojoExecutionException(e.getMessage(), e);
}
try (JarFile jarFile = new JarFile(result.getArtifact().getFile())) {
extractJarToArchive(jarFile, aos);
}
}
}