[ https://issues.apache.org/jira/browse/JCRVLT-331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16765458#comment-16765458 ]
Mark Adamcin commented on JCRVLT-331: ------------------------------------- For additional reference, I determined that the maven-compiler-plugin:compile goal is responsible for initially setting the project artifact file to be the build output directory: https://github.com/apache/maven-plugins/blob/trunk/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java {code:java} public void execute() throws MojoExecutionException, CompilationFailureException { if ( skipMain ) { getLog().info( "Not compiling main sources" ); return; } super.execute(); if ( outputDirectory.isDirectory() ) { projectArtifact.setFile( outputDirectory ); } } {code} > Incorrected embedded base name used in generate-metadata goal during CLI > execution of `mvn test` > ------------------------------------------------------------------------------------------------ > > Key: JCRVLT-331 > URL: https://issues.apache.org/jira/browse/JCRVLT-331 > Project: Jackrabbit FileVault > Issue Type: Improvement > Components: package maven plugin > Affects Versions: package-maven-plugin-1.0.3 > Reporter: Mark Adamcin > Priority: Major > > The lifecycle-mapping for the `content-package` packaging type included in > the plugin attaches the generate-metadata goal to the `process-classes` > phase. This results in odd behavior in a multi-module project when the > execution phase specified for a build is prior to `package` (i.e. `mvn > test`). When the filevault plugin is configured to embed a dependency built > by another module in this situation, and when the `<embedded>` element does > not declare a `<destFileName>`, it will try to embed the classes directory of > that module, since `process-classes` phase is active, but the `package` phase > will not be reached. > This error I reached during a `mvn test -B` execution offers a clue to the > symptom. In this case, having TWO such embeds introduces a filter path > collision because the final artifact name of both modules is reduced to > `classes`: > {code:java} > [INFO] --- filevault-package-maven-plugin:1.0.3:generate-metadata > (default-generate-metadata) @ oakpal-aem-interactive-apps --- > [INFO] Embedding --- Embedded: > groupId=net.adamcin.oakpal,artifactId=oakpal-core,type=,classifier=,filter=true,excludeTransitive=false,target=/apps/oakpal-interactive/install/ > --- > [INFO] Embedding net.adamcin.oakpal:oakpal-core:jar:1.1.14-SNAPSHOT (from > /home/travis/build/adamcin/oakpal/core/target/classes) -> > jcr_root/apps/oakpal-interactive/install/classes > [INFO] Embedding --- Embedded: > groupId=net.adamcin.oakpal,artifactId=net.adamcin.oakpal.interactive,type=,classifier=,filter=true,excludeTransitive=false,target=/apps/oakpal-interactive/install/ > --- > [INFO] Embedding > net.adamcin.oakpal:net.adamcin.oakpal.interactive:jar:1.1.14-SNAPSHOT (from > /home/travis/build/adamcin/oakpal/aem/net.adamcin.oakpal.interactive/target/classes) > -> jcr_root/apps/oakpal-interactive/install/classes > [INFO] using meta-inf/vault from > /home/travis/build/adamcin/oakpal/aem/interactive-apps/src/main/META-INF/vault > [INFO] Loading filter from > /home/travis/build/adamcin/oakpal/aem/interactive-apps/src/main/META-INF/vault/filter.xml > [INFO] Merging inline filters. > ... > ... > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD FAILURE > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 35.480 s > [INFO] Finished at: 2019-02-11T18:00:04Z > [INFO] Final Memory: 50M/621M > [INFO] > ------------------------------------------------------------------------ > [ERROR] Failed to execute goal > org.apache.jackrabbit:filevault-package-maven-plugin:1.0.3:generate-metadata > (default-generate-metadata) on project oakpal-aem-interactive-apps: Execution > default-generate-metadata of goal > org.apache.jackrabbit:filevault-package-maven-plugin:1.0.3:generate-metadata > failed: Merging of equal filter roots not allowed for: > /apps/oakpal-interactive/install/classes -> [Help 1]{code} > This issue theoretically affects the plugin for all execution phases between > `process-classes` and `prepare-package` (inclusive), but the problem is > greatest for executions up to the `test` phase, since the other phases in > this range are usually not executed across a multi-module project. > In order to support incremental builds which, intentionally, do not proceed > to the `package` phase, the GenerateMetadataMojo behavior for constructing > the filter for each embedded artifact should not rely on the native filename > (`File.getName()`), since that may be temporarily mapped to a folder > containing test classes. Instead, users would expect the filter to use the > default maven layout base name, by default. -- This message was sent by Atlassian JIRA (v7.6.3#76005)