transformations for releasing projects that update versions
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114745 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fad3b5e6c4
commit
f7c6c104c4
@ -3,6 +3,7 @@
|
|||||||
<project
|
<project
|
||||||
xmlns:ant="jelly:ant"
|
xmlns:ant="jelly:ant"
|
||||||
xmlns:archive="release:archive"
|
xmlns:archive="release:archive"
|
||||||
|
xmlns:transform="release:transform"
|
||||||
xmlns:define="jelly:define"
|
xmlns:define="jelly:define"
|
||||||
xmlns:deploy="deploy"
|
xmlns:deploy="deploy"
|
||||||
xmlns:maven="jelly:maven"
|
xmlns:maven="jelly:maven"
|
||||||
@ -99,6 +100,28 @@
|
|||||||
</define:tag>
|
</define:tag>
|
||||||
</define:taglib>
|
</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>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
|
|
||||||
| Convert SNAPSHOT version identifiers to real snapshot versions.
|
| Convert SNAPSHOT version identifiers to real snapshot versions.
|
||||||
|
|||||||
@ -84,7 +84,7 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
|
* @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
|
||||||
*
|
*
|
||||||
* @version $Id: AbstractPomTransformer.java,v 1.8 2003/04/12 08:12:46 dion Exp $
|
* @version $Id: AbstractPomTransformer.java,v 1.9 2004/02/25 22:34:46 brett Exp $
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractPomTransformer
|
public abstract class AbstractPomTransformer
|
||||||
implements PomTransformer
|
implements PomTransformer
|
||||||
@ -284,23 +284,6 @@ public abstract class AbstractPomTransformer
|
|||||||
*/
|
*/
|
||||||
public abstract String selectNodesXPathExpression();
|
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
|
* @param node
|
||||||
|
|||||||
@ -0,0 +1,145 @@
|
|||||||
|
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 apache@apache.org.
|
||||||
|
*
|
||||||
|
* 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:brett@apache.org">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 );
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@ import org.apache.commons.jelly.tags.core.CoreTagLibrary;
|
|||||||
* Release tag library.
|
* Release tag library.
|
||||||
*
|
*
|
||||||
* @author <a href="jason@zenplex.com">Jason van Zyl</a>
|
* @author <a href="jason@zenplex.com">Jason van Zyl</a>
|
||||||
* @version $Id: ReleaseTagLibrary.java,v 1.3 2003/02/11 22:01:13 jvanzyl Exp $
|
* @version $Id: ReleaseTagLibrary.java,v 1.4 2004/02/25 22:34:46 brett Exp $
|
||||||
*/
|
*/
|
||||||
public class ReleaseTagLibrary
|
public class ReleaseTagLibrary
|
||||||
extends CoreTagLibrary
|
extends CoreTagLibrary
|
||||||
@ -19,5 +19,6 @@ public class ReleaseTagLibrary
|
|||||||
{
|
{
|
||||||
registerTag( "resolve-snapshots", ResolveSnapshotsTag.class );
|
registerTag( "resolve-snapshots", ResolveSnapshotsTag.class );
|
||||||
registerTag( "increment-snapshot-version", SnapshotVersionTransformerTag.class );
|
registerTag( "increment-snapshot-version", SnapshotVersionTransformerTag.class );
|
||||||
|
registerTag( "release-version", VersionTransformerTag.class );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,107 @@
|
|||||||
|
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 apache@apache.org.
|
||||||
|
*
|
||||||
|
* 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() );
|
||||||
|
}
|
||||||
|
}
|
||||||
5
release/src/test-data/test-pom-no-versions.xml
Normal file
5
release/src/test-data/test-pom-no-versions.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<project>
|
||||||
|
|
||||||
|
<currentVersion>1.2-SNAPSHOT</currentVersion>
|
||||||
|
|
||||||
|
</project>
|
||||||
18
release/src/test-data/test-pom-versions-correct.xml
Normal file
18
release/src/test-data/test-pom-versions-correct.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<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>
|
||||||
18
release/src/test-data/test-pom-versions-multiple.xml
Normal file
18
release/src/test-data/test-pom-versions-multiple.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<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>
|
||||||
18
release/src/test-data/test-pom-versions-overwrite.xml
Normal file
18
release/src/test-data/test-pom-versions-overwrite.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<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>
|
||||||
13
release/src/test-data/test-pom-versions-tag-match-only.xml
Normal file
13
release/src/test-data/test-pom-versions-tag-match-only.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<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>
|
||||||
18
release/src/test-data/test-pom-versions-wrong-order.xml
Normal file
18
release/src/test-data/test-pom-versions-wrong-order.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<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>
|
||||||
13
release/src/test-data/test-pom-versions.xml
Normal file
13
release/src/test-data/test-pom-versions.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<project>
|
||||||
|
|
||||||
|
<currentVersion>1.2-SNAPSHOT</currentVersion>
|
||||||
|
|
||||||
|
<versions>
|
||||||
|
<version>
|
||||||
|
<id>1.1</id>
|
||||||
|
<name>1.1</name>
|
||||||
|
<tag>TEST_1_1</tag>
|
||||||
|
</version>
|
||||||
|
</versions>
|
||||||
|
|
||||||
|
</project>
|
||||||
@ -0,0 +1,332 @@
|
|||||||
|
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 apache@apache.org.
|
||||||
|
*
|
||||||
|
* 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() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -6,6 +6,12 @@
|
|||||||
<author email="dion@apache.org">dIon Gillard</author>
|
<author email="dion@apache.org">dIon Gillard</author>
|
||||||
</properties>
|
</properties>
|
||||||
<body>
|
<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">
|
<release version="1.2" date="2003-09-30">
|
||||||
<action dev="jvanzyl" type="fix">
|
<action dev="jvanzyl" type="fix">
|
||||||
Applied patch for <a href="http://jira.codehaus.org/secure/ViewIssue.jspa?id=11157">MAVEN-542</a>.
|
Applied patch for <a href="http://jira.codehaus.org/secure/ViewIssue.jspa?id=11157">MAVEN-542</a>.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user