From 05b2cfbb1e9ebbacc1fca6a6a4a33c5123a892d1 Mon Sep 17 00:00:00 2001 From: Martin Bergljung Date: Mon, 5 Sep 2016 15:23:53 +0100 Subject: [PATCH] Fix so JAR project files are not duplicated in WAR, #391 --- plugins/alfresco-maven-plugin/pom.xml | 7 +++ .../org/alfresco/maven/plugin/RunMojo.java | 49 ++++--------------- 2 files changed, 17 insertions(+), 39 deletions(-) diff --git a/plugins/alfresco-maven-plugin/pom.xml b/plugins/alfresco-maven-plugin/pom.xml index a46a7d00..fc70a4d8 100644 --- a/plugins/alfresco-maven-plugin/pom.xml +++ b/plugins/alfresco-maven-plugin/pom.xml @@ -134,6 +134,13 @@ mojo-executor 2.2.0 + + + org.zeroturnaround + zt-zip + 1.9 + jar + diff --git a/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java b/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java index 306d4acc..11b87d48 100644 --- a/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java +++ b/plugins/alfresco-maven-plugin/src/main/java/org/alfresco/maven/plugin/RunMojo.java @@ -17,7 +17,6 @@ */ package org.alfresco.maven.plugin; -import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Dependency; @@ -31,9 +30,9 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.ResolutionScope; import org.apache.maven.project.MavenProject; +import org.zeroturnaround.zip.ZipUtil; import java.io.File; -import java.io.IOException; import java.util.*; import static org.twdata.maven.mojoexecutor.MojoExecutor.*; @@ -52,7 +51,6 @@ import static org.twdata.maven.mojoexecutor.MojoExecutor.*; requiresDependencyResolution = ResolutionScope.TEST) public class RunMojo extends AbstractMojo { public static final String MAVEN_DEPENDENCY_PLUGIN_VERSION = "2.10"; - public static final String MAVEN_WAR_PLUGIN_VERSION = "2.6"; public static final String MAVEN_INSTALL_PLUGIN_VERSION = "2.5.2"; public static final String MAVEN_REPLACER_PLUGIN_VERSION = "1.5.3"; public static final String MAVEN_RESOURCE_PLUGIN_VERSION = "2.7"; @@ -626,8 +624,8 @@ public class RunMojo extends AbstractMojo { // Then apply all these amps to the unpacked war // Call the Alfresco Maven Plugin Install Mojo directly, so we don't have to keep SDK version info here - String ampsLocation = project.getBasedir() + "/target/" + ampsModuleDir; - String warLocation = project.getBasedir() + "/target/" + getWarName(warName); + String ampsLocation = project.getBuild().getDirectory() + "/" + ampsModuleDir; + String warLocation = project.getBuild().getDirectory() + "/" + getWarName(warName); InstallMojo installMojo = new InstallMojo(); installMojo.setAmpLocation(new File(ampsLocation)); installMojo.setWarLocation(new File(warLocation)); @@ -669,39 +667,12 @@ public class RunMojo extends AbstractMojo { final String warSourceDir = getWarOutputDir(warName); // Package the customized war file - executeMojo( - plugin( - groupId("org.apache.maven.plugins"), - artifactId("maven-war-plugin"), - version(MAVEN_WAR_PLUGIN_VERSION) - ), - goal("war"), - configuration( - element(name("warName"), warName), - element(name("warSourceDirectory"), warSourceDir), - // Specifically tell the archiver where the manifest file is, - // so a new manifest is not generated. - // We are picking the manifest from the original war. - // If we don't do this, then customized share.war will not start properly. - element(name("archive"), - element(name("manifestFile"), warSourceDir + "/META-INF/MANIFEST.MF") - ) - ) - , execEnv - ); + // Note. don't use the maven-war-plugin here as it will package the module files twice, once from the + // target/classes dir and once via the JAR + String warPath = project.getBuild().getDirectory() + "/" + warName + ".war"; + ZipUtil.pack(new File(warSourceDir), new File(warPath)); - // Delete temporary webapp assembly dir, so it is not added to next webapp that is assembled... - // (otherwise share.war will contain alfresco.war stuff) - String tempAssemblyDir = project.getBasedir() + "/target/" + project.getArtifactId() + "-" + project.getVersion(); - getLog().info("Deleting temp webapp assembly dir: " + tempAssemblyDir); - File tempWebAppAssemblyDir = new File(tempAssemblyDir); - try { - FileUtils.deleteDirectory(tempWebAppAssemblyDir); - } catch (IOException e) { - e.printStackTrace(); - } - - // Install the customized war file in local maven repo + // Install the customized war file in the local maven repo executeMojo( plugin( groupId("org.apache.maven.plugins"), @@ -710,7 +681,7 @@ public class RunMojo extends AbstractMojo { ), goal("install-file"), configuration( - element(name("file"), "${project.build.directory}/" + warName + ".war"), + element(name("file"), warPath), element(name("groupId"), "${project.groupId}"), element(name("artifactId"), warArtifactId), element(name("version"), "${project.version}"), @@ -1093,7 +1064,7 @@ public class RunMojo extends AbstractMojo { * @return a directory such as: .../aio/target/platform-war */ private String getWarOutputDir(String baseWarName) { - return "${project.build.directory}/" + getWarName(baseWarName); + return project.getBuild().getDirectory() + "/" + getWarName(baseWarName); } /**