[ 
https://jira.codehaus.org/browse/MDEP-440?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=352414#comment-352414
 ] 

Karl-Heinz Marbaise commented on MDEP-440:
------------------------------------------

Can you provide an example project which shows the behaviour and may be shows 
what you expect?

> When dependency:build-classpath includeArtifactIds is set and 
> excludeTransitive is still false, include transitive dependencies of 
> specified artifacts
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MDEP-440
>                 URL: https://jira.codehaus.org/browse/MDEP-440
>             Project: Maven Dependency Plugin
>          Issue Type: New Feature
>          Components: build-classpath
>            Reporter: David Boden
>            Priority: Trivial
>
> Summary:
> Please consider supporting on the dependency:build-classpath goal:
> * includeArtifacts=component-A
> * excludeTransitive=false
> Result: creating a classpath containing component-A's transitive dependencies.
> Detail:
> My use case is that I have a large assembly .zip that includes multiple 
> components but I want to create "personalised" scripts for each component.
> Each script's classpath must include a large subset of the total list of 
> dependencies. However, although they share many dependencies, component-A 
> shouldn't have component-B's jar file on its classpath. Or if component-A 
> uses Apache MQ and component-B doesn't then the Apache MQ jars shouldn't 
> appear on component-B's classpath.
> It would be convenient to be able to say "build me the classpath for 
> component-A, including all its dependencies" within the context of the wider 
> assembly build. Would it be appropriate to do this by setting 
> includeArtifactIds=component-A and leaving excludeTransitive as false? At the 
> moment, as soon as you add includeArtifactIds, only those specific artifacts 
> are included.
> The well-used alternative is to have the scripts generated in the individual 
> component's build. The assembly pulls together all the components and 
> scripts. However, there's no guarantee that the dependency resolution for the 
> individual component decided on the same versions of .jar files as the 
> overall assembly build. This can lead to some component's scripts relying on 
> version 1.3 of Apache MQ but the asssembly packaging version 1.4. This 
> enforcer goal exists to break the build if a potential problem is detected:
> https://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
> I feel that it's more convenient to build the scripts and the assembly in one 
> shot and avoid the possibility of dependency resolution problems as far as 
> the scripts are concerned. (of course, it opens you up to the possibility of 
> runtime problems where a component won't execute properly because it's 
> running against a different version of the dependency that it was compiled 
> against).



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to