[jira] (MNG-4391) DependencyManagement should allow replaceWith to manage use of re-named, woven, instrumented or compatible artifacts

2014-07-02 Thread Paul Benedict (JIRA)

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

Paul Benedict updated MNG-4391:
---

Fix Version/s: (was: Issues to be reviewed for 3.x)

 DependencyManagement should allow replaceWith to manage use of re-named, 
 woven, instrumented or compatible artifacts
 --

 Key: MNG-4391
 URL: https://jira.codehaus.org/browse/MNG-4391
 Project: Maven
  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
   groupIdcom.sun.jersey.contribs/groupId
   artifactIdjersey-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
 groupIdorg.springframework/groupId
 artifactidorg.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
   groupIdorg.springframework/groupId
   artifactidorg.springframework.beans/groupId
   version${spring.version}/version
 /dependency
 !-- This deals with artifact name change --
 dependency
   groupIdorg.springframework/groupId
   artifactidspring-beans/groupId
   replaceWith  !-- list of dependency elements --
   dependency
 groupIdorg.springframework/groupId
 artifactidorg.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 was sent by Atlassian JIRA
(v6.1.6#6162)


[jira] (MNG-4391) DependencyManagement should allow replaceWith to manage use of re-named, woven, instrumented or compatible artifacts

2012-04-16 Thread JIRA

[ 
https://jira.codehaus.org/browse/MNG-4391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=296553#comment-296553
 ] 

Sören Chittka commented on MNG-4391:
-

+1 for having this in 3.1

I really like the syntax suggested above. It makes clear what is intended. If 
this is to much 'smoke-and-mirrors' a decent IDE can make visible what is going 
on.

 DependencyManagement should allow replaceWith to manage use of re-named, 
 woven, instrumented or compatible artifacts
 --

 Key: MNG-4391
 URL: https://jira.codehaus.org/browse/MNG-4391
 Project: Maven 2  3
  Issue Type: Improvement
  Components: Dependencies
Affects Versions: 2.2.1
Reporter: Neale
 Fix For: Issues to be reviewed for 3.x


 [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
   groupIdcom.sun.jersey.contribs/groupId
   artifactIdjersey-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
 groupIdorg.springframework/groupId
 artifactidorg.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
   groupIdorg.springframework/groupId
   artifactidorg.springframework.beans/groupId
   version${spring.version}/version
 /dependency
 !-- This deals with artifact name change --
 dependency
   groupIdorg.springframework/groupId
   artifactidspring-beans/groupId
   replaceWith  !-- list of dependency elements --
   dependency
 groupIdorg.springframework/groupId
 artifactidorg.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, 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