aboutsummaryrefslogtreecommitdiffstats
path: root/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-06-24 13:49:56 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2020-06-24 13:49:56 +0200
commit9ef4dd059567e7ba2108e50fd0c851178982006c (patch)
treeb9cbd8c9a63a0ed4df47b904f94f6118c8e4d5ed /bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
parent1f1876624de0ca909a366fa16db97a34a686ae42 (diff)
Implement goal for assembling test bundles
Introduce an abstract class containing behaviour that is shared with existing bundle assemble goal. Add abstract
Diffstat (limited to 'bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java')
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java107
1 files changed, 13 insertions, 94 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
index 13d73d58a97..bed7610e82f 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/AssembleContainerPluginMojo.java
@@ -1,53 +1,36 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.plugin.mojo;
-import com.yahoo.container.plugin.util.Files;
-import com.yahoo.container.plugin.util.JarFiles;
-import org.apache.maven.archiver.MavenArchiveConfiguration;
-import org.apache.maven.archiver.MavenArchiver;
-import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Build;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import java.io.File;
-import java.nio.channels.Channels;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.EnumMap;
-import java.util.Enumeration;
import java.util.Map;
-import java.util.jar.JarEntry;
import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
/**
* @author Tony Vaagenes
- * @author ollivir
+ * @author Olli Virtanen
+ * @author bjorncs
*/
@Mojo(name = "assemble-container-plugin", requiresDependencyResolution = ResolutionScope.COMPILE, threadSafe = true)
-public class AssembleContainerPluginMojo extends AbstractMojo {
+public class AssembleContainerPluginMojo extends AbstractAssembleBundleMojo {
private static enum Dependencies {
WITH, WITHOUT
}
- @Parameter(defaultValue = "${project}")
- private MavenProject project = null;
-
@Component
private MavenProjectHelper projectHelper;
- @Parameter(defaultValue = "${session}", readonly = true, required = true)
- private MavenSession session = null;
-
- @Parameter
- private MavenArchiveConfiguration archiveConfiguration = new MavenArchiveConfiguration();
-
@Parameter(alias = "UseCommonAssemblyIds", defaultValue = "false")
private boolean useCommonAssemblyIds = false;
@@ -74,19 +57,17 @@ public class AssembleContainerPluginMojo extends AbstractMojo {
jarFiles.put(dep, jarFileInBuildDirectory(build().getFinalName(), suffix));
});
- // force recreating the archive
- archiveConfiguration.setForced(true);
- archiveConfiguration.setManifestFile(new File(new File(build().getOutputDirectory()), JarFile.MANIFEST_NAME));
+ Path manifestFile = Paths.get(build().getOutputDirectory(), JarFile.MANIFEST_NAME);
JarArchiver jarWithoutDependencies = new JarArchiver();
- addClassesDirectory(jarWithoutDependencies);
- createArchive(jarFiles.get(Dependencies.WITHOUT), jarWithoutDependencies);
+ addDirectory(jarWithoutDependencies, Paths.get(build().getOutputDirectory()));
+ createArchive(jarWithoutDependencies, jarFiles.get(Dependencies.WITHOUT).toPath(), manifestFile);
project.getArtifact().setFile(jarFiles.get(Dependencies.WITHOUT));
JarArchiver jarWithDependencies = new JarArchiver();
- addClassesDirectory(jarWithDependencies);
- addDependencies(jarWithDependencies);
- createArchive(jarFiles.get(Dependencies.WITH), jarWithDependencies);
+ addDirectory(jarWithDependencies, Paths.get(build().getOutputDirectory()));
+ addArtifacts(jarWithDependencies, Artifacts.getArtifactsToInclude(project));
+ createArchive(jarWithDependencies, jarFiles.get(Dependencies.WITH).toPath(), manifestFile);
if (attachBundleArtifact) {
projectHelper.attachArtifact(project,
@@ -96,68 +77,6 @@ public class AssembleContainerPluginMojo extends AbstractMojo {
}
}
- private File jarFileInBuildDirectory(String name, String suffix) {
- return new File(build().getDirectory(), name + suffix);
- }
-
- private void addClassesDirectory(JarArchiver jarArchiver) {
- File classesDirectory = new File(build().getOutputDirectory());
- if (classesDirectory.isDirectory()) {
- jarArchiver.addDirectory(classesDirectory);
- }
- }
-
- private void createArchive(File jarFile, JarArchiver jarArchiver) throws MojoExecutionException {
- MavenArchiver mavenArchiver = new MavenArchiver();
- mavenArchiver.setArchiver(jarArchiver);
- mavenArchiver.setOutputFile(jarFile);
- try {
- mavenArchiver.createArchive(session, project, archiveConfiguration);
- } catch (Exception e) {
- throw new MojoExecutionException("Error creating archive " + jarFile.getName(), e);
- }
- }
-
- private void addDependencies(JarArchiver jarArchiver) {
- Artifacts.getArtifactsToInclude(project).forEach(artifact -> {
- if ("jar".equals(artifact.getType())) {
- jarArchiver.addFile(artifact.getFile(), "dependencies/" + artifact.getFile().getName());
- copyConfigDefinitions(artifact.getFile(), jarArchiver);
- } else {
- getLog().warn("Unkown artifact type " + artifact.getType());
- }
- });
- }
-
- private void copyConfigDefinitions(File file, JarArchiver jarArchiver) {
- JarFiles.withJarFile(file, jarFile -> {
- for (Enumeration<JarEntry> entries = jarFile.entries(); entries.hasMoreElements();) {
- JarEntry entry = entries.nextElement();
- String name = entry.getName();
- if (name.startsWith("configdefinitions/") && name.endsWith(".def")) {
- copyConfigDefinition(jarFile, entry, jarArchiver);
- }
- }
- return null;
- });
- }
-
- private void copyConfigDefinition(JarFile jarFile, ZipEntry entry, JarArchiver jarArchiver) {
- JarFiles.withInputStream(jarFile, entry, input -> {
- String defPath = entry.getName().replace("/", File.separator);
- File destinationFile = new File(build().getOutputDirectory(), defPath);
- destinationFile.getParentFile().mkdirs();
-
- Files.withFileOutputStream(destinationFile, output -> {
- output.getChannel().transferFrom(Channels.newChannel(input), 0, Long.MAX_VALUE);
- return null;
- });
- jarArchiver.addFile(destinationFile, entry.getName());
- return null;
- });
- }
-
- private Build build() {
- return project.getBuild();
- }
+ private File jarFileInBuildDirectory(String name, String suffix) { return new File(build().getDirectory(), name + suffix); }
+ private Build build() { return project.getBuild(); }
}