brett 2004/02/25 14:34:46 Modified: release plugin.jelly release/src/main/org/apache/maven/release AbstractPomTransformer.java release/src/main/org/apache/maven/release/jelly ReleaseTagLibrary.java release/xdocs changes.xml Added: release/src/main/org/apache/maven/release VersionTransformer.java release/src/main/org/apache/maven/release/jelly VersionTransformerTag.java release/src/test/org/apache/maven/release VersionTransformerTest.java release/src/test-data test-pom-no-versions.xml test-pom-versions-correct.xml test-pom-versions-multiple.xml test-pom-versions-overwrite.xml test-pom-versions-tag-match-only.xml test-pom-versions-wrong-order.xml test-pom-versions.xml Log: transformations for releasing projects that update versions Revision Changes Path 1.20 +23 -0 maven-plugins/release/plugin.jelly Index: plugin.jelly =================================================================== RCS file: /home/cvs/maven-plugins/release/plugin.jelly,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- plugin.jelly 17 Oct 2003 22:21:41 -0000 1.19 +++ plugin.jelly 25 Feb 2004 22:34:46 -0000 1.20 @@ -3,6 +3,7 @@ <project xmlns:ant="jelly:ant" xmlns:archive="release:archive" + xmlns:transform="release:transform" xmlns:define="jelly:define" xmlns:deploy="deploy" xmlns:maven="jelly:maven" @@ -98,6 +99,28 @@ siteCommand="cd @deployDirectory@; chmod g+w ${name}; chgrp ${maven.remote.group} ${name}"/> </define:tag> </define:taglib> + + <define:taglib uri="release:transform"> + <define:tag name="release-version"> + <r:release-version + version="${version}" + tag="${tag}" + transformer="transformer" + transformations="transformations"/> + <j:set var="required" value="${transformer.transformRequired()}" /> + <j:if test="${required}"> + <ant:echo>Updating POM with version ${version}; tag ${tag}</ant:echo> + ${transformer.transformNodes()} + ${transformer.write()} + </j:if> + </define:tag> + </define:taglib> + + <goal name="release:update-pom"> + <transform:release-version + version="${version}" + tag="${tag}" /> + </goal> <!-- | 1.9 +1 -18 maven-plugins/release/src/main/org/apache/maven/release/AbstractPomTransformer.java Index: AbstractPomTransformer.java =================================================================== RCS file: /home/cvs/maven-plugins/release/src/main/org/apache/maven/release/AbstractPomTransformer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- AbstractPomTransformer.java 12 Apr 2003 08:12:46 -0000 1.8 +++ AbstractPomTransformer.java 25 Feb 2004 22:34:46 -0000 1.9 @@ -285,23 +285,6 @@ public abstract String selectNodesXPathExpression(); /** - * The XPath expression returned will select the single node - * within the single node which needs to be transformed. - * - * @return - */ - public abstract String selectNodeXPath(); - - /** - * - * @param node - * @return - * @throws Exception - */ - public abstract String getNodeContent( Node node ) - throws Exception; - - /** * * @param node * @throws Exception 1.1 maven-plugins/release/src/main/org/apache/maven/release/VersionTransformer.java Index: VersionTransformer.java =================================================================== package org.apache.maven.release; /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Maven" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Maven", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * ==================================================================== */ import org.apache.commons.io.FileUtils; import org.apache.maven.MavenConstants; import org.apache.maven.project.Project; import org.apache.maven.util.HttpUtils; import org.dom4j.Element; import org.dom4j.Node; import java.io.File; import java.util.Iterator; /** * * * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a> * * @version $Id: VersionTransformer.java,v 1.1 2004/02/25 22:34:46 brett Exp $ */ public class VersionTransformer extends AbstractPomTransformer { private String version; private String tag; public VersionTransformer( String version, String tag ) { this.version = version; this.tag = tag; } // ------------------------------------------------------------------------- // Accessors // ------------------------------------------------------------------------- public String selectNodesXPathExpression() { return "/project"; } public void transformNode( Node node ) throws Exception { Node currentVersion = node.selectSingleNode( "currentVersion" ); currentVersion.setText( version ); Node version = node.selectSingleNode( "versions/version[tag='" + tag + "']" ); if ( version != null ) { // tag exists - overwrite version.selectSingleNode( "id" ).setText( this.version ); version.selectSingleNode( "name" ).setText( this.version ); } else { // tag doesn't exist - add Element project = ( Element ) node; Element versions = ( Element ) project.selectSingleNode( "versions" ); if ( versions == null ) { versions = project.addElement( "versions" ); } Element v = versions.addElement( "version" ); v.addElement( "id" ).addText( this.version ); v.addElement( "name" ).addText( this.version ); v.addElement( "tag" ).addText( tag ); } } public Node getTransformedNode( Node node ) throws Exception { throw new UnsupportedOperationException( "getTransformedNode not implemented" ); } public boolean transformRequired() { Node node = ( Node ) getSelectedNodes().get( 0 ); Node currentVersion = node.selectSingleNode( "currentVersion" ); if ( !currentVersion.getText().equals( version )) { return true; } Node v = node.selectSingleNode( "versions/version[tag='" + tag + "' and id='" + version + "' and name='" + version + "']" ); return ( v == null ); } } 1.4 +2 -1 maven-plugins/release/src/main/org/apache/maven/release/jelly/ReleaseTagLibrary.java Index: ReleaseTagLibrary.java =================================================================== RCS file: /home/cvs/maven-plugins/release/src/main/org/apache/maven/release/jelly/ReleaseTagLibrary.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ReleaseTagLibrary.java 11 Feb 2003 22:01:13 -0000 1.3 +++ ReleaseTagLibrary.java 25 Feb 2004 22:34:46 -0000 1.4 @@ -19,5 +19,6 @@ { registerTag( "resolve-snapshots", ResolveSnapshotsTag.class ); registerTag( "increment-snapshot-version", SnapshotVersionTransformerTag.class ); + registerTag( "release-version", VersionTransformerTag.class ); } } 1.1 maven-plugins/release/src/main/org/apache/maven/release/jelly/VersionTransformerTag.java Index: VersionTransformerTag.java =================================================================== package org.apache.maven.release.jelly; /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Maven" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Maven", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * ==================================================================== */ import org.apache.commons.jelly.JellyTagException; import org.apache.commons.jelly.XMLOutput; import org.apache.maven.MavenConstants; import org.apache.maven.project.Project; import org.apache.maven.release.VersionTransformer; public class VersionTransformerTag extends AbstractTransformerTag { private VersionTransformer transformer; private String version; private String tag; public String getVersion() { return this.version; } public void setVersion( String version ) { this.version = version; } public String getTag() { return this.tag; } public void setTag( String tag ) { this.tag = tag; } public void doTag( XMLOutput output ) throws JellyTagException { Project project = (Project) context.getVariable( MavenConstants.MAVEN_POM ); transformer = new VersionTransformer( version, tag ); transformer.setProject( project.getFile() ); transformer.setVariables( project.getContext().getVariables() ); transformer.setOutputFile( project.getFile() ); context.setVariable( getTransformer(), transformer ); context.setVariable( getTransformations(), transformer.getTransformations() ); } } 1.1 maven-plugins/release/src/test/org/apache/maven/release/VersionTransformerTest.java Index: VersionTransformerTest.java =================================================================== package org.apache.maven.release; /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Maven" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Maven", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ import junit.framework.TestCase; import java.io.File; import java.util.List; import org.dom4j.Node; /** */ public class VersionTransformerTest extends TestCase { /** * Constructor. * * @param name Name of the test. */ public VersionTransformerTest( String name ) { super( name ); } public void testNoVersions() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-no-versions.xml" ) ); assertTrue( "check transform required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 1", 1, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } public void testOneVersion() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-versions.xml" ) ); assertTrue( "check transform required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 2", 2, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.1", "1.1", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.1", "1.1", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_1", "TEST_1_1", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 1 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } public void testMultipleVersions() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-versions-multiple.xml" ) ); assertTrue( "check transform required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 3", 3, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 1 ); assertEquals( "Check version id is 1.1", "1.1", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.1", "1.1", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_1", "TEST_1_1", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 2 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } public void testMultipleVersionsWrongOrder() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-versions-wrong-order.xml" ) ); assertTrue( "check transform required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 3", 3, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.1", "1.1", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.1", "1.1", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_1", "TEST_1_1", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 1 ); assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 2 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } public void testVersionsOverwrite() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-versions-overwrite.xml" ) ); assertTrue( "check transform required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 2", 2, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 1 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } public void testVersionsCorrect() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-versions-correct.xml" ) ); assertFalse( "check transform not required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 2", 2, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() ); version = ( Node ) versionNodes.get( 1 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } public void testVersionsTagMatchOnly() throws Exception { VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" ); vt.setProject( new File( System.getProperty( "basedir" ), "/src/test-data/test-pom-versions-tag-match-only.xml" ) ); assertTrue( "check transform required", vt.transformRequired() ); vt.transformNodes(); vt.write(); List nodes = vt.getDocument().selectNodes( "/project" ); assertEquals( 1, nodes.size() ); Node project = ( Node ) nodes.get( 0 ); assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() ); List versionNodes = project.selectNodes( "versions/version" ); assertEquals( "Check # versions is 1", 1, versionNodes.size() ); Node version = ( Node ) versionNodes.get( 0 ); assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() ); assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() ); assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() ); } } 1.1 maven-plugins/release/src/test-data/test-pom-no-versions.xml Index: test-pom-no-versions.xml =================================================================== <project> <currentVersion>1.2-SNAPSHOT</currentVersion> </project> 1.1 maven-plugins/release/src/test-data/test-pom-versions-correct.xml Index: test-pom-versions-correct.xml =================================================================== <project> <currentVersion>1.2</currentVersion> <versions> <version> <id>1.0</id> <name>1.0</name> <tag>TEST_1_0</tag> </version> <version> <id>1.2</id> <name>1.2</name> <tag>TEST_1_2</tag> </version> </versions> </project> 1.1 maven-plugins/release/src/test-data/test-pom-versions-multiple.xml Index: test-pom-versions-multiple.xml =================================================================== <project> <currentVersion>1.2-SNAPSHOT</currentVersion> <versions> <version> <id>1.0</id> <name>1.0</name> <tag>TEST_1_0</tag> </version> <version> <id>1.1</id> <name>1.1</name> <tag>TEST_1_1</tag> </version> </versions> </project> 1.1 maven-plugins/release/src/test-data/test-pom-versions-overwrite.xml Index: test-pom-versions-overwrite.xml =================================================================== <project> <currentVersion>1.2-SNAPSHOT</currentVersion> <versions> <version> <id>1.0</id> <name>1.0</name> <tag>TEST_1_0</tag> </version> <version> <id>1.2</id> <name>1.2</name> <tag>TEST_1_2</tag> </version> </versions> </project> 1.1 maven-plugins/release/src/test-data/test-pom-versions-tag-match-only.xml Index: test-pom-versions-tag-match-only.xml =================================================================== <project> <currentVersion>1.2-SNAPSHOT</currentVersion> <versions> <version> <id>1.2-SNAPSHOT</id> <name>1.2-SNAPSHOT</name> <tag>TEST_1_2</tag> </version> </versions> </project> 1.1 maven-plugins/release/src/test-data/test-pom-versions-wrong-order.xml Index: test-pom-versions-wrong-order.xml =================================================================== <project> <currentVersion>1.2-SNAPSHOT</currentVersion> <versions> <version> <id>1.1</id> <name>1.1</name> <tag>TEST_1_1</tag> </version> <version> <id>1.0</id> <name>1.0</name> <tag>TEST_1_0</tag> </version> </versions> </project> 1.1 maven-plugins/release/src/test-data/test-pom-versions.xml Index: test-pom-versions.xml =================================================================== <project> <currentVersion>1.2-SNAPSHOT</currentVersion> <versions> <version> <id>1.1</id> <name>1.1</name> <tag>TEST_1_1</tag> </version> </versions> </project> 1.5 +6 -0 maven-plugins/release/xdocs/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/maven-plugins/release/xdocs/changes.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- changes.xml 29 Sep 2003 23:56:08 -0000 1.4 +++ changes.xml 25 Feb 2004 22:34:46 -0000 1.5 @@ -6,6 +6,12 @@ <author email="[EMAIL PROTECTED]">dIon Gillard</author> </properties> <body> + <release version="1.3-SNAPSHOT" date="in CVS"> + <action dev="bporter" type="add"> + Add POM transformer that updates currentVersion and the <versions/> element with a specified + version and tag. + </action> + </release> <release version="1.2" date="2003-09-30"> <action dev="jvanzyl" type="fix"> Applied patch for <a href="http://jira.codehaus.org/secure/ViewIssue.jspa?id=11157">MAVEN-542</a>.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]