|
I posted a question regarding this on the maven users mailing list. At least now I know it appears to be a bug and not my POM. Another slight difference is that my property is for the SCM username and password - ${cvs-user} and ${cvs-pass}. After a release:perform both of these properties are replaced with the ones from the settings.xml. I have tried removing the properties from the POM and specifiying them with \ -Dusername and -Dpassword. Doing this also reasults in the SCM path being altered and the login details added. Both the exported POM and the original POM are incorrectly altered. <scm> <connection>scm:cvs:pserver:${cvs-user}:${cvs-pass}@10.0.0.3:/usr/share/cvs/cvsroot:MyProjectName</connection> <developerConnection>scm:cvs:pserver:${cvs-user}:${cvs-pass}@10.0.0.3:/usr/share/cvs/cvsroot:MyProjectName</developerConnection> </scm> turns to <scm> <connection>scm:cvs:pserver:joebloggs:p4ssw0rd@10.0.0.3:/usr/share/cvs/cvsroot:MyProjectName</connection> <developerConnection>scm:cvs:pserver:joebloggs:p4ssw0rd@10.0.0.3:/usr/share/cvs/cvsroot:MyProjectName</developerConnection> </scm> after the release:perform is called. I experienced this problem but with release:prepare, not release:perform. To the best of my knowledge, release:perform shouldn't be modifying any checked-in code. It simply checks out the configured tag and runs whatever goals it's configured to run (like deploy, deploy-site). FYI - this seems very related to http://jira.codehaus.org/browse/MRELEASE-114 I'm attaching a possible fix for this issue to Some notes: 1. I made the assumption that the only reason we rewrite the scm config is for subversion. This is quite possibly not the case, but it passed all the unit tests and made my CVS scm do what I wanted it to. This is probably not the way it should be implemented, but I don't know enough about the other SCMs to know if the rewrite is a special case or the non-rewrite is a special case. I'm experiencing the same problem but with ${user.name} <developerConnection> scm:cvs:pserver:${user.name}@CVS_HOST:/cvs/CVS_ROOT:PROJECT_DIR </developerConnection> where the tagged release value is correct but the transformed version for the next snapshot is incorrect as $[user.name} This doesn't look like it is fixed by reading the patch attached to Tested on my first release with beta-5 and the scm url is still badly updated.
Stephane - was is the difference between the test cases and your environment? Just wondering if this was actually fixed for a certain set of cases (and a new issue needs to be opened), or not fixed at all (and so the fix version needs to be changed) Brett, It's very similar to the comment of Barrie Treloar. I have a ${maven.username} token in the developerConnection entry and it's replaced by release:prepare. See this diff [maven-release-plugin] prepare for next development iteration
Index: pom.xml
===================================================================
RCS file: /data/cvsroot/bar/pom.xml,v
retrieving revision 1.19.4.7
retrieving revision 1.19.4.8
diff -u -d -r1.19.4.7 -r1.19.4.8
--- pom.xml 23 May 2007 13:58:35 -0000 1.19.4.7
+++ pom.xml 23 May 2007 13:58:54 -0000 1.19.4.8
@@ -8,7 +8,7 @@
</parent>
<groupId>com.foo.shared.bar</groupId>
<artifactId>ionic-bar</artifactId>
- <version>5.5.5</version>
+ <version>5.5.6-SNAPSHOT</version>
<packaging>jar</packaging>
<inceptionYear>2007</inceptionYear>
<name>bar</name>
@@ -296,8 +296,8 @@
<scm>
<connection>scm:cvs:pserver:anonymous:blablabla@cvsserver:/data/cvsroot:bar</connection>
- <developerConnection>scm:cvs:pserver:$\{maven.username\}@cvsserver:/data/cvsroot:bar</developerConnection>
+ <developerConnection>scm:cvs:pserver:maven@cvsserver:/data/cvsroot:bar</developerConnection>
<url>http://intranet/cgi-bin/viewcvs.cgi/bar/</url>
- <tag>V5_5_5</tag>
+ <tag>RSE341</tag>
</scm>
</project>
SCM is CVS of course. and forget the \ between the { (otherwise the formating is screwed). I agree. Just saying it is fixed doesn't make it so. We use ${USER} in the developerConnection (CVS) and it's being replaced too. Plugin version is 2.0-beta-6. I'm still seeing this issue with maven-release-plugin 2.0-beta-7. The pom in the tag is correct, but the final pom in the HEAD has ${user.name} expanded in the <scm> section. I have attacted a patch for CVS only (it is more a hack than a patch) I think the Method transformScm() in org.apache.maven.shared.release.phase.RewritePomsForDevelopmentPhase must be implements like the Method translateScm() in org.apache.maven.shared.release.phase.RewritePomsForReleasePhase, but my knowledge about scm and maven is not good enough to be sure. Here's a patch which fixes the problems for pom.xml.next and pom.xml.tag: Branching is not (yet) supported. It works like this: instead of using scm.getConnection() and scm.getDeveloperConnection() (which both contain the resolved variables), it uses the original text contained in pom.xml (using the XML element). HOWEVER ... the tests for RewritePomsForDevelopmentPhase fail. I don't know exactly what's going on, but ... hmm, could the tests be wrong? (This is a silly assumption, I know, but ... well, I just don't know.) Still, after patching you can install maven-release-manager with mvn -Dmaven.test.skip=true clean install and see if it works for you, too. Emmanuel, I believe this is still broken in RewritePomsForDevelopmentPhase.transformScm(). The RewritePomsForReleasePhase.transformScm() works fine (note releaseConfiguration.mapOriginalScmInfo( projectId, project.getScm() ) Here are changes on my pom that were committed to cvs over the prepare-perform cycle (replaced some parts with <...>) Note the ${scm.username} is replaced with starver <scm> Hi, The POM files are changed after having called scm part in parent POM before release:prepare: scm part in parent POM AFTER release:prepare (properties have been replaced): scm part in child POM before release:prepare: As we are currently moving some projects from cvs to subversion I recognized that the patch is only valid for CVS. When using svn the patch may not be used as otherwise the poms left in the trunk/branch will then include the tagname. So I did put around two ifs in RewritePomsForDevelopmentPhase, checking if it is scm:cvs: if ( scm != null )
{
String connection = scm.getConnection();
String developerConnection = scm.getDeveloperConnection();
if ((connection != null) && (connection.startsWith("scm:cvs:"))) {
//MRELEASE-128
String oldConnection = connection;
connection = ( scmRoot.getChildText("connection", namespace) != null )
? scmRoot.getChildText("connection", namespace)
: scm.getConnection();
getLogger().info("applying Patch MRELEASE-128 to connection, replacing " + oldConnection + " with " + connection);
}
if ((developerConnection != null) && (developerConnection.startsWith("scm:cvs:"))) {
//MRELEASE-128
String oldConnection = developerConnection;
developerConnection = ( scmRoot.getChildText("developerConnection", namespace) != null )
? scmRoot.getChildText("developerConnection", namespace)
: scm.getDeveloperConnection();
getLogger().info("applying Patch MRELEASE-128 to developerConnection, replacing " + oldConnection + " with " + connection);
}
rewriteElement( "connection", connection, scmRoot, namespace );
rewriteElement( "developerConnection", developerConnection, scmRoot, namespace );
rewriteElement( "url", scm.getUrl(), scmRoot, namespace );
rewriteElement( "tag", translator.resolveTag( scm.getTag() ), scmRoot, namespace );
(sorry - I am currently not able to create a patch-file for this as we have reversioned the source in our corporate system and it would not be applyable to the 'official' branch). It should be (after applying the patch mentioned above in src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java now it seems to work with both cvs and svn. When I am at home I will try to apply this to a 'fresh' checkout from the branch and create a real patch-file Edit: formatting Wow, this bug is THREE AND A HALF YEARS OLD and nobody has been able to fix it? +1 for fixing this bug. The ticket says "Fix Version/s: 2.0.1". Is it now really fixed in 2.0.1? Are you planning to release a fixed version soon? If it's fixed and tagged in svn I would not bother to build it myself... |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Same for SVN. The plugin should restore the original entries in the trunk (HEAD revision) again.