You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Paul Benedict (JIRA)" <ji...@codehaus.org> on 2009/10/12 19:03:26 UTC
[jira] Commented: (MNG-4391) DependencyManagement should allow
to manage use of re-named, woven, instrumented or compatible
artifacts
[ http://jira.codehaus.org/browse/MNG-4391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=194428#action_194428 ]
Paul Benedict commented on MNG-4391:
------------------------------------
I don't think replacing is a good idea since it introduces a kind of relocation logic. Regardless, would adding global exclusions (MNG-1977) help?
> DependencyManagement should allow <replaceWith> to manage use of re-named, woven, instrumented or compatible artifacts
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: MNG-4391
> URL: http://jira.codehaus.org/browse/MNG-4391
> Project: Maven 2
> Issue Type: Improvement
> Components: Dependencies
> Affects Versions: 2.2.1
> Reporter: Neale
>
> [if only this was a later version of JIRA I'd have not lost all of what I just typed, as I could use Mylyn instead of the web UI. here goes again...]
> The challenge of using a different artifact instead of the one that is specified in a POM that you are consuming is not an easy one.
> Examples where this hits uses is:
> - the artifact name and packaging changes that Spring made at 2.5.6A (which was a big improvement)
> - wanting to use SLF4J instead of Apache commons logging (i.e. use something that provides the same API, but is an entirely different project)
> - wanting to use your own derivation of a public artifact
> - wanting to use a woven/instrumented version of a public artifact
> The current approach to replacing, say org.springframework : spring-beans with org.springframework : org.springframework.beans is to do ('scuse the shorthand):
> {code:xml}
> <dependencyManagement>
> <dependencies>
> <dependency>
> <groupId>com.sun.jersey.contribs</groupId>
> <artifactId>jersey-spring</artifactId>
> <exclusions>
> org.springframework : spring-beans
> </exclusions>
> </dependency>
> ... repeat for every artifact that uses spring-beans, and then add more if adding another artifact
> </dependencies>
> </dependencyManagement>
> {code}
> to exclude it, and then globally include the replacement using:
> {code:xml}
> <dependencies>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactid>org.springframework.beans</groupId>
> <version>${spring.version}</version>
> </dependency>
> </dependencies>
> {code}
> This is error prone, and could be made far easier by an extension to dependencies, which would remove the need to know what artifacts (jersey-spring in the above example) use the artifact that you are replacing. Here's how it would look:
> {code:xml}
> <dependencyManagement>
> <!-- this declares the version we want to use if this artifact is in use -->
> <dependencies>
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactid>org.springframework.beans</groupId>
> <version>${spring.version}</version>
> </dependency>
> <!-- This deals with artifact name change -->
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactid>spring-beans</groupId>
> <replaceWith> <!-- list of dependency elements -->
> <dependency>
> <groupId>org.springframework</groupId>
> <artifactid>org.springframework.beans</groupId>
> </dependency>
> <!-- more dependency elements could be added here if an artifact has been split -->
> </replaceWith>
> </dependency>
> </dependencies>
> {code}
> NOTE:
> - Nothing is specified in <dependencies> so no artifacts are globally added where they may not be needed. This means we can develop a project wide parent pom.xml.
> - Artifacts can have been split and merged
> - Derived artifacts, such as instrumented ones can easily be substituted, and could be selectively substituted using profiles.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira