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

Mark Raynsford commented on MASSEMBLY-848:
------------------------------------------

The problem is here (this entire method, really):

https://github.com/apache/maven-plugins/blob/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java#L232

I'm debugging based on the contents of an integration test, the
original source files of which came from this example project:

  https://github.com/io7m/independent-versioning-20170207

When line 232 is reached in the debugger, the dependencyArtifacts
parameter contains the two artifacts
com.io7m.experimental:mod-a:jar:1.1.0:compile and
com.io7m.experimental:mod-b:jar:1.2.0:compile and both of those claim
to already have been resolved (isResolved() == true), which makes sense
as they're reactor projects. Both are present in the given
configSource.reactorProjects list. However, the code doesn't appear to
make any use of this list or the fact that the artifacts are already
resolved. It simply passes the list of artifacts to the resolver which
then fails with an OverConstrainedVersionException because the reactor
project artifacts aren't in any of the remote or local repositories.

This seems to be the root cause, but I can't work out
whether this is expected behaviour, misuse of an API, an oversight, or
possibly all or none of the above!

> Version range dependencies not resolved from the reactor
> --------------------------------------------------------
>
>                 Key: MASSEMBLY-848
>                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-848
>             Project: Maven Assembly Plugin
>          Issue Type: Bug
>    Affects Versions: 3.0.0
>         Environment: Apache Maven 3.3.9 
> (NON-CANONICAL_2015-11-23T13:17:27+03:00_root; 2015-11-23T10:17:27+00:00)
> Maven home: /opt/maven
> Java version: 1.8.0_121, vendor: Oracle Corporation
> Java home: /usr/lib/jvm/java-8-openjdk/jre
> Default locale: en_GB, platform encoding: UTF-8
> OS name: "linux", version: "4.8.13-1-arch", arch: "amd64", family: "unix"
>            Reporter: Mark Raynsford
>         Attachments: mvn.log.gz
>
>
> When using modules that have independent version numbers (that is, modules in 
> the same project may have different version numbers), it's commonplace to 
> specify dependencies between modules with version ranges when using semantic 
> versioning.
> For some reason, when version ranges are used on dependencies that refer to 
> modules that are part of the project (and therefore should be in the 
> reactor), the assembly plugin ignores them and tries to resolve them from the 
> local repository instead.
> The following project reproduces this issue (just "mvn clean package"):
> https://github.com/io7m/independent-versioning-20170207
> Interestingly, this didn't happen with the same assembly plugin on older 
> Maven versions. Here's a successful build on Travis CI:
> https://travis-ci.org/io7m/independent-versioning-20170207



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to