[ 
https://issues.apache.org/jira/browse/MNG-6066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16428589#comment-16428589
 ] 

Jesse Glick commented on MNG-6066:
----------------------------------

While the automake idiom does serve as a workaround, this nonetheless seems to 
be a serious regression in developer usability and local build performance for 
multimodule projects compared to traditional version schemes, in which a 
submodule could be repeatedly built independently after ensuring that its 
parent and all dependencies were installed into the local repository. Doing a 
full reactor build of potentially dozens of modules would be impractically slow 
for, say, {{mvn -am -pl submodule compile}} after making a one-line change to a 
source file in a submodule. Rerunning a test case using {{mvn -am -pl submodule 
surefire:test}} is possible only after specifying {{-DfailIfNoTests=false}} to 
prevent the build from failing in any of the prior modules lacking a test of 
that name, and anyway you would need to {{test-compile}} first if you made any 
main or test source changes.

Would Maven developers be open to a mitigation restoring the ability to run 
non-reactor submodule builds when CI versions are in use? Since the 
{{relativePath}} (default {{..}}) already tells Maven where the parent is, it 
seems that it would be possible to locate and parse the parent POM reliably.

> Continuous Delivery friendly versions break with multi-module projects
> ----------------------------------------------------------------------
>
>                 Key: MNG-6066
>                 URL: https://issues.apache.org/jira/browse/MNG-6066
>             Project: Maven
>          Issue Type: Bug
>    Affects Versions: 3.3.9
>            Reporter: G. Richard Bellamy
>            Assignee: Karl Heinz Marbaise
>            Priority: Major
>
> When I have a multi-module maven project, and one of the sub-modules is a 
> mult-module POM itself, the use of a continuous delivery friendly version in 
> the parent <version/>  breaks the build from within either {{sub-module-1}} 
> or {{sub-module-2}}.
> Some Maven multi-module project like so:
> {noformat}
> parent
>      + sub-module 1
>      |            + child 1-1
>      |            |
>      |            + child 1-2
>      |
>      + sub-module 2
>                   + child 2-1
> {noformat}
> In the example build below, I've set Maven to offline mode - this happens 
> when online as well. Specifically, the problem is that Maven is looking for a 
> parent POM with the version set to {{1.${revision\}}}, which is incorrect.
> I believe the problem stems from the fact that the value stored in the 
> {{<parent/>}} includes the property, which isn't correctly parsed.
> {code}
> 2016-07-16 12:49:59
> rbellamy@terraspark i ~/Development/test-cd-ci-friendly-versions master % mvn 
> -o -DskipTests compile
> [INFO] Scanning for projects...
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Build Order:
> [INFO]
> [INFO] child-1-1
> [INFO] child-1-2
> [INFO] sub-module-1
> [INFO] child-2-1
> [INFO] sub-module-2
> [INFO] test-cd-ci-friendly-versions
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-1-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
> child-1-1 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] Copying 0 resource
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ child-1-1 ---
> [INFO] Changes detected - recompiling the module!
> [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. 
> build is platform dependent!
> [INFO] Compiling 1 source file to 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-1/target/classes
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-1-2 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
> child-1-2 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] Copying 0 resource
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ child-1-2 ---
> [INFO] Changes detected - recompiling the module!
> [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. 
> build is platform dependent!
> [INFO] Compiling 1 source file to 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-2/target/classes
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building sub-module-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-2-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
> child-2-1 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] Copying 0 resource
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ child-2-1 ---
> [INFO] Changes detected - recompiling the module!
> [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. 
> build is platform dependent!
> [INFO] Compiling 1 source file to 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-2/child-2-1/target/classes
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building sub-module-2 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building test-cd-ci-friendly-versions 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] child-1-1 .......................................... SUCCESS [  0.756 
> s]
> [INFO] child-1-2 .......................................... SUCCESS [  0.111 
> s]
> [INFO] sub-module-1 ....................................... SUCCESS [  0.000 
> s]
> [INFO] child-2-1 .......................................... SUCCESS [  0.045 
> s]
> [INFO] sub-module-2 ....................................... SUCCESS [  0.001 
> s]
> [INFO] test-cd-ci-friendly-versions ....................... SUCCESS [  0.000 
> s]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 1.030 s
> [INFO] Finished at: 2016-07-16T12:50:08-07:00
> [INFO] Final Memory: 16M/305M
> [INFO] 
> ------------------------------------------------------------------------
> 2016-07-16 12:50:08
> rbellamy@terraspark i ~/Development/test-cd-ci-friendly-versions master % cd 
> sub-module-2
> 2016-07-16 12:50:23
> rbellamy@terraspark i ~/Development/test-cd-ci-friendly-versions/sub-module-2 
> master % mvn -o -DskipTests compile
> [INFO] Scanning for projects...
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Build Order:
> [INFO]
> [INFO] child-2-1
> [INFO] sub-module-2
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-2-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] child-2-1 .......................................... FAILURE [  0.091 
> s]
> [INFO] sub-module-2 ....................................... SKIPPED
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 0.180 s
> [INFO] Finished at: 2016-07-16T12:50:29-07:00
> [INFO] Final Memory: 8M/309M
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] Failed to execute goal on project child-2-1: Could not resolve 
> dependencies for project com.terradatum:child-2-1:jar:1.0-SNAPSHOT: Failed to 
> collect dependencies at com.terradatum:child-1-2:jar:1.0-SNAPSHOT: Failed to 
> read artifact descriptor for com.terradatum:child-1-2:jar:1.0-SNAPSHOT: 
> Cannot access nexus (https://nexus.terradatum.com/content/groups/public) in 
> offline mode and the artifact com.terradatum:sub-module-1:pom:1.${revision} 
> has not been downloaded from it before. -> [Help 1]
> [ERROR]
> [ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
> switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions, please 
> read the following articles:
> [ERROR] [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
> zsh: exit 1     mvn -o -DskipTests compile
> {code}
> And here's a run with a top-level online install, followed by an attempt to 
> build {{sub-module-2}}...
> {code}
> 2016-07-16 12:57:39
> rbellamy@terraspark i ~/Development/test-cd-ci-friendly-versions master % mvn 
> -DskipTests install
> [INFO] Scanning for projects...
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Build Order:
> [INFO]
> [INFO] child-1-1
> [INFO] child-1-2
> [INFO] sub-module-1
> [INFO] child-2-1
> [INFO] sub-module-2
> [INFO] test-cd-ci-friendly-versions
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-1-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
> child-1-1 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] Copying 0 resource
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ child-1-1 ---
> [INFO] Nothing to compile - all classes are up to date
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ 
> child-1-1 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] skip non existing resourceDirectory 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-1/src/test/resources
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ 
> child-1-1 ---
> [INFO] Nothing to compile - all classes are up to date
> [INFO]
> [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ child-1-1 ---
> [INFO] Tests are skipped.
> [INFO]
> [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ child-1-1 ---
> [INFO] Building jar: 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-1/target/child-1-1-1.0-SNAPSHOT.jar
> [INFO]
> [INFO] --- maven-install-plugin:2.4:install (default-install) @ child-1-1 ---
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-1/target/child-1-1-1.0-SNAPSHOT.jar
>  to 
> /Users/rbellamy/.m2/repository/com/terradatum/child-1-1/1.0-SNAPSHOT/child-1-1-1.0-SNAPSHOT.jar
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-1/pom.xml
>  to 
> /Users/rbellamy/.m2/repository/com/terradatum/child-1-1/1.0-SNAPSHOT/child-1-1-1.0-SNAPSHOT.pom
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-1-2 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
> child-1-2 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] Copying 0 resource
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ child-1-2 ---
> [INFO] Nothing to compile - all classes are up to date
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ 
> child-1-2 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] skip non existing resourceDirectory 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-2/src/test/resources
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ 
> child-1-2 ---
> [INFO] Nothing to compile - all classes are up to date
> [INFO]
> [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ child-1-2 ---
> [INFO] Tests are skipped.
> [INFO]
> [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ child-1-2 ---
> [INFO] Building jar: 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-2/target/child-1-2-1.0-SNAPSHOT.jar
> [INFO]
> [INFO] --- maven-install-plugin:2.4:install (default-install) @ child-1-2 ---
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-2/target/child-1-2-1.0-SNAPSHOT.jar
>  to 
> /Users/rbellamy/.m2/repository/com/terradatum/child-1-2/1.0-SNAPSHOT/child-1-2-1.0-SNAPSHOT.jar
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/child-1-2/pom.xml
>  to 
> /Users/rbellamy/.m2/repository/com/terradatum/child-1-2/1.0-SNAPSHOT/child-1-2-1.0-SNAPSHOT.pom
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building sub-module-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-install-plugin:2.4:install (default-install) @ sub-module-1 
> ---
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-1/pom.xml 
> to 
> /Users/rbellamy/.m2/repository/com/terradatum/sub-module-1/1.0-SNAPSHOT/sub-module-1-1.0-SNAPSHOT.pom
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-2-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
> child-2-1 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] Copying 0 resource
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ child-2-1 ---
> [INFO] Nothing to compile - all classes are up to date
> [INFO]
> [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ 
> child-2-1 ---
> [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
> resources, i.e. build is platform dependent!
> [INFO] skip non existing resourceDirectory 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-2/child-2-1/src/test/resources
> [INFO]
> [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ 
> child-2-1 ---
> [INFO] Nothing to compile - all classes are up to date
> [INFO]
> [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ child-2-1 ---
> [INFO] Tests are skipped.
> [INFO]
> [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ child-2-1 ---
> [INFO] Building jar: 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-2/child-2-1/target/child-2-1-1.0-SNAPSHOT.jar
> [INFO]
> [INFO] --- maven-install-plugin:2.4:install (default-install) @ child-2-1 ---
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-2/child-2-1/target/child-2-1-1.0-SNAPSHOT.jar
>  to 
> /Users/rbellamy/.m2/repository/com/terradatum/child-2-1/1.0-SNAPSHOT/child-2-1-1.0-SNAPSHOT.jar
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-2/child-2-1/pom.xml
>  to 
> /Users/rbellamy/.m2/repository/com/terradatum/child-2-1/1.0-SNAPSHOT/child-2-1-1.0-SNAPSHOT.pom
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building sub-module-2 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-install-plugin:2.4:install (default-install) @ sub-module-2 
> ---
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/sub-module-2/pom.xml 
> to 
> /Users/rbellamy/.m2/repository/com/terradatum/sub-module-2/1.0-SNAPSHOT/sub-module-2-1.0-SNAPSHOT.pom
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building test-cd-ci-friendly-versions 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-install-plugin:2.4:install (default-install) @ 
> test-cd-ci-friendly-versions ---
> [INFO] Installing 
> /Users/rbellamy/Development/test-cd-ci-friendly-versions/pom.xml to 
> /Users/rbellamy/.m2/repository/com/terradatum/test-cd-ci-friendly-versions/1.0-SNAPSHOT/test-cd-ci-friendly-versions-1.0-SNAPSHOT.pom
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] child-1-1 .......................................... SUCCESS [  0.783 
> s]
> [INFO] child-1-2 .......................................... SUCCESS [  0.032 
> s]
> [INFO] sub-module-1 ....................................... SUCCESS [  0.004 
> s]
> [INFO] child-2-1 .......................................... SUCCESS [  0.025 
> s]
> [INFO] sub-module-2 ....................................... SUCCESS [  0.005 
> s]
> [INFO] test-cd-ci-friendly-versions ....................... SUCCESS [  0.004 
> s]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 0.968 s
> [INFO] Finished at: 2016-07-16T13:03:55-07:00
> [INFO] Final Memory: 12M/309M
> [INFO] 
> ------------------------------------------------------------------------
> 2016-07-16 13:03:55
> rbellamy@terraspark i ~/Development/test-cd-ci-friendly-versions master % cd 
> sub-module-2
> 2016-07-16 13:04:00
> rbellamy@terraspark i ~/Development/test-cd-ci-friendly-versions/sub-module-2 
> master % mvn -DskipTests compile
> [INFO] Scanning for projects...
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Build Order:
> [INFO]
> [INFO] child-2-1
> [INFO] sub-module-2
> [INFO]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Building child-2-1 1.0-SNAPSHOT
> [INFO] 
> ------------------------------------------------------------------------
> Downloading: 
> https://nexus.terradatum.com/content/groups/public/com/terradatum/sub-module-1/1.$%7Brevision%7D/sub-module-1-1.$%7Brevision%7D.pom
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] child-2-1 .......................................... FAILURE [  0.644 
> s]
> [INFO] sub-module-2 ....................................... SKIPPED
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 0.733 s
> [INFO] Finished at: 2016-07-16T13:04:08-07:00
> [INFO] Final Memory: 14M/309M
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] Failed to execute goal on project child-2-1: Could not resolve 
> dependencies for project com.terradatum:child-2-1:jar:1.0-SNAPSHOT: Failed to 
> collect dependencies at com.terradatum:child-1-2:jar:1.0-SNAPSHOT: Failed to 
> read artifact descriptor for com.terradatum:child-1-2:jar:1.0-SNAPSHOT: Could 
> not find artifact com.terradatum:sub-module-1:pom:1.${revision} in nexus 
> (https://nexus.terradatum.com/content/groups/public) -> [Help 1]
> [ERROR]
> [ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
> switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR]
> [ERROR] For more information about the errors and possible solutions, please 
> read the following articles:
> [ERROR] [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
> zsh: exit 1     mvn -DskipTests compile
> {code}
> Link to reproduction to be added shortly.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to