[ 
https://jira.codehaus.org/browse/MNG-4831?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jiri Patera updated MNG-4831:
-----------------------------

    Attachment: maven-bug-simulation-MNG-4831.zip

Attached a simple example which clearly simulates this issue 
([^maven-bug-simulation-MNG-4831.zip]). One can easily play with it to see the 
results (just call {{mvn clean verify}} on the multiproject).

B and C both depend on A. In the {{result}} artifact there are two assembly 
descriptors to create two ZIP files with the dependencies. If everything 
worked, the expected output would be two ZIP files. One with B and A {{jar}} 
files. The other with C and A {{jar}} files. However, the result is one ZIP 
file with B and A {{jar}} files and the other ZIP file with C {{jar}} only.

As [~rkrell] states, one workaround is to change the order of artifacts (usable 
only for one {{maven-assembly-plugin}} configuration in the {{result}} 
artifact). The other, perhaps, to create two separate artifacts (one for each 
{{maven-assembly-plugin}} configuration) and make sure no filtering on the 
dependency tree happens. If necessary, one can play with the [Dependency 
Mediation|http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html]
 to achieve their goals... None of these workarounds seems nice.
                
> artifact.getDependencyTrail() doesn't include full information; causes 
> problems filtering artifacts by transitive dependency trail
> ----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-4831
>                 URL: https://jira.codehaus.org/browse/MNG-4831
>             Project: Maven 2 & 3
>          Issue Type: Improvement
>          Components: Artifacts and Repositories
>    Affects Versions: 2.2.1, 3.0-beta-3
>            Reporter: John Casey
>         Attachments: maven-bug-simulation-MNG-4831.zip
>
>
> Artifact.getDependencyTrail() is a List, not a graph. This means the artifact 
> doesn't include information about every artifact that depends on that 
> artifact.
> In cases where the project's artifacts are filtered using the dependency 
> trail, it can become impossible to capture the full dependency closure for an 
> included artifact if that artifact depends on something that an excluded 
> artifact also depends on.
> For a concrete example / test case of this, see MASSEMBLY-504. 
> In this example, A and B both depend on C. However, the dependencySet 
> _excludes_ B from the assembly. By luck of the draw, profile dependencies are 
> appended to the project's other dependencies, and B is in the dependencyTrail 
> of C, not A (both are valid to be there). Since transitive filtering is 
> enabled, C is _excluded_ from the assembly along with B, and the classpath 
> for A is not fully represented.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to