[ https://jira.codehaus.org/browse/MRELEASE-399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=356360#comment-356360 ]
Jackie Noi commented on MRELEASE-399: ------------------------------------- This issue still exists with latest maven versions, so I solved the resolution of the parent version during release via the maven-groovy-plugin by adding the following code to the parent pom. This enables reproducible builds of released versions while still using RELEASE as version of parent artifacts in trunk. {code} <pluginManagement> <plugins> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.5.1</version> <configuration> <preparationGoals>clean org.codehaus.gmaven:groovy-maven-plugin:execute verify</preparationGoals> <completionGoals>org.codehaus.gmaven:groovy-maven-plugin:execute</completionGoals> </configuration> </plugin> <plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>groovy-maven-plugin</artifactId> <version>2.0</version> <configuration> <source><![CDATA[if(project.parent != null) { def projectParentVersionRaw = "${project.parent.version}" def projectParentVersionResolved = project.parent.version def newParentVersion = null if(project.version.endsWith("-SNAPSHOT")) { // revert parent in next development snapshot POM before commit if(projectParentVersionRaw != "RELEASE" && projectParentVersionRaw != "LATEST") { def oldPomFile = new File(project.basedir, "pom.xml.releaseBackup") if(oldPomFile.exists()) { def oldPomRoot = groovy.xml.DOMBuilder.parse(new FileReader(oldPomFile)).documentElement use(groovy.xml.dom.DOMCategory) { oldPomParentVersion = oldPomRoot.parent.version[0].text() } if(oldPomParentVersion == "RELEASE") { newParentVersion = "RELEASE" } } } } else { // set resolved parent version in release POM before commit if(projectParentVersionRaw == "RELEASE") { newParentVersion = projectParentVersionResolved } } if(newParentVersion) { log.info("Setting parent version to $project.parent.version") def pomFile = new File(project.basedir, "pom.xml") def pomRoot = groovy.xml.DOMBuilder.parse(new FileReader(pomFile)).documentElement use(groovy.xml.dom.DOMCategory) { pomRoot.parent.version[0].value = newParentVersion } pomFile.write(groovy.xml.XmlUtil.serialize(pomRoot)) } }]]></source> </configuration> <dependencies> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.3.7</version> </dependency> </dependencies> </plugin> </plugins> </pluginManagement> {code} > Replace dependency version for <version>RELEASE</version> dependency. > --------------------------------------------------------------------- > > Key: MRELEASE-399 > URL: https://jira.codehaus.org/browse/MRELEASE-399 > Project: Maven Release Plugin > Issue Type: Improvement > Components: prepare > Affects Versions: 2.0-beta-8 > Reporter: Nicolas Adrian Barrera > > I 'm using RELEASE version for some dependencies in my current project. > Imagine a simple scenario where i have project A who depends on project B..., > A's pom.xml states: > ... > <dependency> > <artifactId>b</artifactId> > <groupId>ar.com.b</groupId> > <version>RELEASE</version> > </dependency> > ... > When running "mvn compile" to A, there maven knows which is B's last released > version so that it can compile against certain specific code at that time, > imagine it is 1.2.0. > So why when I run "mvn release:prepare" A's tagged (released, svn cp) pom.xml > doesn't replace <version>RELEASE</version> with <version>1.2.0</version> ? > Why do i think it should? > * So that A's released version will always work the same as that day I > performed A's release > * So that A's released version won't get hurted by possible > non-backward-compatible changes on future B's releases > I 've read at the Maven Definitive Guide e-book that use of > <version>RELEASE</version> is not encouraged, but i seemed helpful for me > until this point where I find this quite dissapointing. > Please feel free to share thoughts may be I got confused with this but i > think this is a problem that worth to be solved. -- This message was sent by Atlassian JIRA (v6.1.6#6162)