You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by lt...@apache.org on 2006/02/02 01:34:22 UTC

svn commit: r374214 - in /maven/maven-1/plugins/trunk/scm: ./ src/main/org/apache/maven/plugins/scm/release/ src/main/org/apache/maven/plugins/scm/release/jelly/

Author: ltheussl
Date: Wed Feb  1 16:34:18 2006
New Revision: 374214

URL: http://svn.apache.org/viewcvs?rev=374214&view=rev
Log:
PR: MPSCM-76
Make scm plugin independent of release plugin.
Imported all classes and the release:transform tag (now: scm:transform).

Added:
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html   (with props)
    maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html   (with props)
Modified:
    maven/maven-1/plugins/trunk/scm/plugin.jelly
    maven/maven-1/plugins/trunk/scm/project.xml

Modified: maven/maven-1/plugins/trunk/scm/plugin.jelly
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/plugin.jelly?rev=374214&r1=374213&r2=374214&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/scm/plugin.jelly (original)
+++ maven/maven-1/plugins/trunk/scm/plugin.jelly Wed Feb  1 16:34:18 2006
@@ -21,13 +21,14 @@
 <project
   xmlns:j="jelly:core"
   xmlns:i="jelly:interaction"
-  xmlns:r="release:transform"
+  xmlns:t="scm:transform"
   xmlns:c="changes:transform"
   xmlns:define="jelly:define"
   xmlns:ant="jelly:ant"
   xmlns:scm="scm"
   xmlns:util="jelly:util"
-  xmlns:maven="jelly:maven">
+  xmlns:maven="jelly:maven"
+  xmlns:r="jelly:org.apache.maven.plugins.scm.release.jelly.ReleaseTagLibrary">
 
   <define:taglib uri="scm">  
     <define:jellybean
@@ -68,6 +69,27 @@
     
   </define:taglib>
 
+  <define:taglib uri="scm: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>
+        <!-- Set default encoding if not set. -->
+        <j:if test="${encoding == null}">
+            <j:set var="encoding" value="${maven.docs.outputencoding}" />
+        </j:if>
+        ${transformer.transformNodes()}
+        ${transformer.write(encoding)}
+      </j:if>
+    </define:tag>
+  </define:taglib>
+
+
   <goal name="scm:find-connection">
     <j:set var="scmConnection" value="${maven.scm.url}" />
     <j:if test="${scmConnection == null}">
@@ -298,7 +320,7 @@
     <!-- TODO: verify that the name is valid for a tag -->
 
     <!-- Update project.xml -->
-    <r:release-version version="${version_name}" tag="${tag_name}" />
+    <t:release-version version="${version_name}" tag="${tag_name}" />
 
     <!-- Update changes.xml if it exists -->
     <j:set var="changesFilename" value="${maven.docs.src}/changes.xml" />

Modified: maven/maven-1/plugins/trunk/scm/project.xml
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/project.xml?rev=374214&r1=374213&r2=374214&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/scm/project.xml (original)
+++ maven/maven-1/plugins/trunk/scm/project.xml Wed Feb  1 16:34:18 2006
@@ -99,12 +99,61 @@
         <role>Java Developer</role>
       </roles>
     </developer>
+    <developer>
+      <name>Lukas Theussl</name>
+      <id>ltheussl</id>
+      <email>ltheussl@apache.org</email>
+      <roles>
+        <role>Developer</role>
+      </roles>
+    </developer>
   </developers>
   <dependencies>
     <dependency>
+      <groupId>maven</groupId>
+      <artifactId>maven</artifactId>
+      <version>1.0.2</version>
+    </dependency>
+    <dependency>
       <groupId>commons-jelly</groupId>
       <artifactId>commons-jelly-tags-interaction</artifactId>
       <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.0</version>
+      <properties>
+        <comment>
+          This library is already loaded by maven's core. Be careful to use the same version number as in the core.
+        </comment>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>commons-jelly</groupId>
+      <artifactId>commons-jelly</artifactId>
+      <version>1.0</version>
+      <properties>
+        <comment>
+          This library is already loaded by maven's core. Be careful to use the same version number as in the core.
+        </comment>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>dom4j</groupId>
+      <artifactId>dom4j</artifactId>
+      <version>1.4</version>
+      <url>http://www.dom4j.org/</url>
+      <properties>
+        <comment>
+          This library is already loaded by maven's core. Be careful to use the same version number as in the core.
+        </comment>
+      </properties>
+    </dependency>
+    <dependency>
+      <groupId>jaxen</groupId>
+      <artifactId>jaxen</artifactId>
+      <version>1.0-FCS-full</version>
     </dependency>
     <dependency>
       <groupId>plexus</groupId>

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,353 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+import org.dom4j.Document;
+import org.dom4j.Namespace;
+import org.dom4j.Node;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
+import org.jaxen.XPath;
+import org.jaxen.dom4j.Dom4jXPath;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.XMLFilterImpl;
+
+/**
+ * This is the base class for any tool that attempts to transform fields
+ * in the POM. Currently we are using the XML form of the POM and using Jaxen
+ * but eventually we will be able to perform the same transformations on
+ * POM beans. Jaxen needs to be modified and some serious cleanup needs to
+ * go on in Maven internally, but this will serve as a start. An attempt is
+ * made to make this tool GUI friendly.
+ *
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id$
+ */
+public abstract class AbstractPomTransformer
+    implements PomTransformer
+{
+    /** POM document */
+    private File project;
+
+    /** Dom4j document. */
+    private Document document;
+
+    /** Output file. */
+    private File outputFile;
+
+    /** Properties used in transformNode */
+    private Map variables;
+
+    /** Nodes selected for transformation using xpath. */
+    private List selectedNodes;
+
+    private List transformations;
+
+    // -------------------------------------------------------------------------
+    // Accessors
+    // -------------------------------------------------------------------------
+
+    /**
+     *
+     * @return
+     */
+    public Map getVariables()
+    {
+        return variables;
+    }
+
+    /**
+     *
+     * @param variables
+     */
+    public void setVariables( Map variables )
+    {
+        this.variables = variables;
+    }
+
+    /**
+     *
+     * @param project
+     */
+    public void setProject( File project )
+    {
+        this.project = project;
+    }
+
+    /**
+     *
+     * @return
+     */
+    public File getProject()
+    {
+        return project;
+    }
+
+    /**
+     *
+     * @return
+     */
+    public Document getDocument()
+    {
+        return document;
+    }
+
+    /**
+     *
+     * @param document
+     */
+    public void setDocument( Document document )
+    {
+        this.document = document;
+    }
+
+    /**
+     *
+     * @return
+     */
+    public File getOutputFile()
+    {
+        return outputFile;
+    }
+
+    /**
+     *
+     * @param outputFile
+     */
+    public void setOutputFile( File outputFile )
+    {
+        this.outputFile = outputFile;
+    }
+
+    /**
+     *
+     * @return
+     */
+    public List getSelectedNodes()
+    {
+        if ( selectedNodes == null )
+        {
+            try
+            {
+                selectNodes();
+            }
+            catch ( Exception e )
+            {
+                // do nothing.
+            }
+        }
+        return selectedNodes;
+    }
+
+    /**
+     *
+     * @param selectedNodes
+     */
+    public void setSelectedNodes( List selectedNodes )
+    {
+        this.selectedNodes = selectedNodes;
+    }
+
+    /**
+     *
+     * @return
+     */
+    public int getSelectedNodeCount()
+    {
+        return getSelectedNodes().size();
+    }
+
+    /**
+     *
+     * @return
+     */
+    public List getTransformations()
+    {
+        if ( transformations == null )
+        {
+            createTransformations();
+        }
+
+        return transformations;
+    }
+
+    /**
+     *
+     */
+    public void createTransformations()
+    {
+        transformations = new ArrayList();
+
+        for ( Iterator i = getSelectedNodes().iterator(); i.hasNext(); )
+        {
+            Object o = i.next();
+
+            if ( o instanceof Node )
+            {
+                Transformation transformation = new Transformation( this );
+                transformation.setNode( (Node) o );
+                transformations.add( transformation );
+            }
+        }
+    }
+
+    /**
+     * This is the automated way of transforming the nodes if there is
+     * no user interaction involved.
+     *
+     * @throws Exception If an error occurs while transforming the nodes.
+     */
+    public void transformNodes()
+        throws Exception
+    {
+        for ( Iterator i = getSelectedNodes().iterator(); i.hasNext(); )
+        {
+            Object o = i.next();
+
+            if ( o instanceof Node )
+            {
+                transformNode( (Node) o );
+            }
+        }
+    }
+
+    // ----------------------------------------------------------------------
+    // Implementation
+    // ----------------------------------------------------------------------
+
+    /**
+     *
+     * @return
+     */
+    public abstract String selectNodesXPathExpression();
+
+    /**
+     *
+     * @param node
+     * @throws Exception
+     */
+    public abstract void transformNode( Node node )
+        throws Exception;
+
+    /**
+     * Update the snapshot version identifiers with actual timestamp versions
+     * and write out the POM in its updated form.
+     *
+     * @throws Exception
+     */
+    public void selectNodes()
+        throws Exception
+    {
+        SAXReader reader = new SAXReader();
+
+        // make xpath expressions worh with poms with or without namespace
+        reader.setXMLFilter( new XMLFilterImpl()
+        {
+
+            public void endElement( String uri, String localName, String qName )
+                throws SAXException
+            {
+                super.endElement( "", localName, "" );
+            }
+
+            public void startElement( String uri, String localName, String qName, Attributes atts )
+                throws SAXException
+            {
+                super.startElement( "", localName, "", atts );
+            }
+
+        } );
+        setDocument( reader.read( getProject() ) );
+
+        // The selecting nodes with the xpath expression will give us a list
+        // of dependencies elements where the version element is equal to 'SNAPSHOT'.
+        // So we can get any information we need, and alter anything we need to before writing
+        // the dom4j document back out.
+        XPath xpath = new Dom4jXPath( selectNodesXPathExpression() );
+        setSelectedNodes( xpath.selectNodes( getDocument() ) );
+    }
+
+    /**
+     *
+     * @throws Exception
+     */
+    public void write()
+        throws Exception
+    {
+        write( null );
+    }
+
+    /**
+     *
+     * @throws Exception
+     */
+    public void write( String encoding )
+        throws Exception
+    {
+        OutputStream os = null;
+
+        if ( getOutputFile() != null )
+        {
+            // Backup the original first.
+            FileUtils.copyFile( getOutputFile(), new File( getOutputFile() + ".backup" ) );
+
+            // Now hand of the os.
+            os = new FileOutputStream( getOutputFile() );
+        }
+        else
+        {
+            os = new PrintStream( System.out );
+        }
+
+        OutputFormat format = new OutputFormat();
+        format.setIndentSize( 2 );
+        format.setNewlines( true );
+        format.setTrimText( true );
+        if ( encoding != null )
+        {
+            format.setEncoding( encoding );
+        }
+
+        XMLWriter writer = new XMLWriter( format )
+        {
+            protected boolean isNamespaceDeclaration( Namespace ns )
+            {
+                // this will filter out empty namespaces, only the correct POM ns is allowed
+                return "http://maven.apache.org/POM/3.0.0".equals( ns.getURI() );
+            }
+        };
+
+        writer.setOutputStream( os );
+        writer.write( getDocument() );
+        writer.flush();
+        writer.close();
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/AbstractPomTransformer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,121 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.dom4j.Document;
+import org.dom4j.io.SAXReader;
+import org.jaxen.XPath;
+import org.jaxen.dom4j.Dom4jXPath;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This is a simple POM manipulator that doesn't take into account any sort of
+ * POM inheritance. When the interpolation and inheritance is cleaned up in the
+ * Maven we will be able to serialize a POM directly with greater ease. But we
+ * may stick with this Jaxen solution anyway because it's so easy. Just turn the
+ * POM in memory into a Dom4j document and perform the same operation as we are
+ * here.
+ */
+public class PomNodeSelector
+{
+    /**
+     * POM document
+     */
+    private File pom;
+
+    /**
+     * Xpath expression.
+     */
+    private String xpathExpression;
+
+    /**
+     * Snapshot dependencies found.
+     */
+    private List nodes;
+
+    /**
+     * Constructor.
+     */
+    public PomNodeSelector()
+    {
+        nodes = new ArrayList();
+    }
+
+    // -------------------------------------------------------------------------
+    // Accessors
+    // -------------------------------------------------------------------------
+
+    public void setXpathExpression( String xpathExpression )
+    {
+        this.xpathExpression = xpathExpression;
+    }
+
+    public String getXpathExpression()
+    {
+        return xpathExpression;
+    }
+
+    /**
+     * Sets the nodes attribute of the PomManipulator object
+     */
+    public void setNodes( List nodes )
+    {
+        this.nodes = nodes;
+    }
+
+    /**
+     * Gets the nodes attribute of the PomManipulator object
+     */
+    public List getNodes()
+    {
+        return nodes;
+    }
+
+    public void setPom( File pom )
+    {
+        this.pom = pom;
+    }
+
+    public File getPom()
+    {
+        return pom;
+    }
+
+    /**
+     * Update the snapshot version identifiers with actual timestamp versions
+     * and write out the POM in its updated form.
+     *
+     * @throws Exception
+     */
+    public void execute()
+        throws Exception
+    {
+        SAXReader reader = new SAXReader();
+        Document doc = reader.read( getPom() );
+
+        // The selecting nodes with the xpath expression will give us a list
+        // of dependencies elements where the version element is equal to 'SNAPSHOT'.
+        // So we can get any information we need, and alter anything we need to before writing
+        // the dom4j document back out.
+        XPath xpath = new Dom4jXPath( getXpathExpression() );
+        setNodes( xpath.selectNodes( doc ) );
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomNodeSelector.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,36 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.dom4j.Node;
+
+/**
+ *
+ *
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id$
+ */
+public interface PomTransformer
+{
+    public void transformNode( Node node )
+        throws Exception;
+
+    public Node getTransformedNode( Node node )
+        throws Exception;
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/PomTransformer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,142 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+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.Node;
+
+import java.io.File;
+import java.util.Iterator;
+
+/**
+ *
+ *
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id$
+ */
+public class SnapshotResolver
+    extends AbstractPomTransformer
+{
+    // -------------------------------------------------------------------------
+    // Accessors
+    // -------------------------------------------------------------------------
+
+    public String selectNodesXPathExpression()
+    {
+        return "/project/dependencies/dependency[version='SNAPSHOT']";
+    }
+
+    public String selectNodeXPath()
+    {
+        return "version";
+    }
+
+    public String getNodeContent( Node node )
+        throws Exception
+    {
+        String timestampVersion = "SNAPSHOT";
+
+        Node idNode = node.selectSingleNode( "id" );
+
+        String groupId;
+        String artifactId;
+        String artifactType = "jar";
+
+        if ( idNode != null )
+        {
+            groupId = idNode.getText();
+            artifactId = groupId;
+        }
+        else
+        {
+            Node artifactIdNode = node.selectSingleNode( "artifactId" );
+            Node groupIdNode = node.selectSingleNode( "groupId" );
+
+            groupId = groupIdNode.getText();
+            artifactId = artifactIdNode.getText();
+        }
+
+        Node typeIdNode = node.selectSingleNode( "type" );
+
+        if ( typeIdNode != null )
+        {
+            artifactType = typeIdNode.getText();
+        }
+
+        // Now we need to attempt to find the the actual timestamp
+        // version for this dependency.
+
+        // Variables are being stored as ConstantExpressions ...
+
+        Project project = (Project) getVariables().get( MavenConstants.MAVEN_POM );
+        File snapshotVersionFile = new File( getProject().getParentFile(), artifactId + "-snapshot-version" );
+
+        for ( Iterator i = project.getContext().getMavenRepoRemote().iterator(); i.hasNext(); )
+        {
+            String remoteRepo = (String) i.next();
+            String url = remoteRepo + "/" + groupId + "/" + artifactType + "s/" + artifactId + "-snapshot-version";
+           
+            try
+            {
+                HttpUtils.getFile( url,
+                                   snapshotVersionFile,
+                                   true, // ignore errors
+                                   false, // use timestamps
+                                   (String) getVariables().get( MavenConstants.PROXY_HOST ), // proxy host
+                                   (String) getVariables().get( MavenConstants.PROXY_PORT ), // proxy port
+                                   (String) getVariables().get( MavenConstants.PROXY_USERNAME ), // proxy user name
+                                   (String) getVariables().get( MavenConstants.PROXY_PASSWORD ) // proxy password
+                );
+            }
+            catch ( Exception e )
+            {
+                // Either doesn't exist, or we have a network problem. In
+                // either event we can't update the version field.
+                System.out.println( "Can't retrieve snapshot version file: " + e.getLocalizedMessage() );
+            }
+
+            if ( snapshotVersionFile.exists() )
+            {
+                timestampVersion = FileUtils.readFileToString( snapshotVersionFile, null );
+            }
+        }
+
+        return timestampVersion;
+    }
+
+    public void transformNode( Node node )
+        throws Exception
+    {
+        Node version = node.selectSingleNode( selectNodeXPath() );
+        version.setText( getNodeContent( node ) );
+    }
+
+    public Node getTransformedNode( Node node )
+        throws Exception
+    {
+        Node transformedNode = (Node) node.clone();
+        Node version = transformedNode.selectSingleNode( selectNodeXPath() );
+        version.setText( getNodeContent( transformedNode ) );
+
+        return transformedNode;
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotResolver.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,76 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.dom4j.Node;
+
+/**
+ *
+ *
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id$
+ */
+public class SnapshotVersionTransformer
+    extends AbstractPomTransformer
+{
+    // -------------------------------------------------------------------------
+    // Accessors
+    // -------------------------------------------------------------------------
+
+    public String selectNodesXPathExpression()
+    {
+        return "/project";
+    }
+
+    public String selectNodeXPath()
+    {
+        return "currentVersion";
+    }
+
+    public String getNodeContent( Node node )
+        throws Exception
+    {
+        String currentVersion = node.selectSingleNode( selectNodeXPath() ).getText();
+
+        int i = currentVersion.indexOf( "-SNAPSHOT" );
+        if ( i > 0 )
+        {
+            currentVersion = currentVersion.substring( 0, i );
+        }
+
+        return currentVersion;
+    }
+
+    public void transformNode( Node node )
+        throws Exception
+    {
+        Node currentVersion = node.selectSingleNode( selectNodeXPath() );
+        currentVersion.setText( getNodeContent( node ) );
+    }
+
+    public Node getTransformedNode( Node node )
+        throws Exception
+    {
+        Node transformedNode = (Node) node.clone();
+        Node currentVersion = transformedNode.selectSingleNode( selectNodeXPath() );
+        currentVersion.setText( getNodeContent( transformedNode ) );
+
+        return transformedNode;
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/SnapshotVersionTransformer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,95 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.dom4j.Node;
+
+/**
+ *
+ *
+ * @author <a href="mailto:jason@zenplex.com">Jason van Zyl</a>
+ *
+ * @version $Id$
+ */
+public class Transformation
+{
+    /** Pom Transformer associated with this transformation. */
+    private PomTransformer pomTransformer;
+
+    /** Node to transform. */
+    private Node node;
+
+    public Transformation( PomTransformer pomTransformer )
+    {
+        this.pomTransformer = pomTransformer;
+    }
+
+    // ----------------------------------------------------------------------
+    // Accessors
+    // ----------------------------------------------------------------------
+
+    /**
+     *
+     * @return
+     */
+    public Node getNode()
+    {
+        return node;
+    }
+
+    /**
+     *
+     * @param node
+     */
+    public void setNode( Node node )
+    {
+        this.node = node;
+    }
+
+    /**
+     *
+     * @throws Exception
+     */
+    public void transform()
+        throws Exception
+    {
+        pomTransformer.transformNode( node );
+    }
+
+    /**
+     *
+     * @return
+     * @throws Exception
+     */
+    public String getBeforeTransformation()
+        throws Exception
+    {
+        return getNode().asXML();
+    }
+
+    /**
+     *
+     * @return
+     * @throws Exception
+     */
+    public String getAfterTransformation()
+        throws Exception
+    {
+        return pomTransformer.getTransformedNode( getNode() ).asXML();
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/Transformation.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,129 @@
+package org.apache.maven.plugins.scm.release;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.dom4j.Element;
+import org.dom4j.Node;
+
+/**
+ *
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ *
+ * @version $Id$
+ */
+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
+    {
+        Element project = ( Element ) node;
+
+        Node currentVersion = node.selectSingleNode( "currentVersion" );
+        if ( currentVersion != null )
+        {
+            currentVersion.setText( version );
+        }
+        else
+        {
+            project.addElement( "currentVersion" ).addText( version );
+        }
+
+        Element version = ( Element ) node.selectSingleNode( "versions/version[tag='" + tag + "']" );
+        if ( version != null )
+        {
+            // tag exists - overwrite
+            Node id = version.selectSingleNode( "id" );
+            if ( id != null )
+            {
+                id.setText( this.version );
+            }
+            else
+            {
+                version.addElement( "id" ).addText( this.version );
+            }
+            Node name = version.selectSingleNode( "name" );
+            if ( name != null )
+            {
+                name.setText( this.version );
+            }
+            else
+            {
+                version.addElement( "name" ).addText( this.version );
+            }
+        }
+        else
+        {
+            // tag doesn't exist - add
+            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 );
+        if ( node == null )
+        {
+            return true;
+        }
+
+        Node currentVersion = node.selectSingleNode( "currentVersion" );
+        if ( currentVersion == null || !currentVersion.getText().equals( version ))
+        {
+            return true;
+        }
+
+        
+        Node v = node.selectSingleNode( "versions/version[tag='" + tag + "' and id='" + version + "' and name='" + version + "']" );
+        return ( v == null );
+    }
+}
+

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/VersionTransformer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,53 @@
+package org.apache.maven.plugins.scm.release.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.JellyTagException;
+import org.apache.commons.jelly.TagSupport;
+import org.apache.commons.jelly.XMLOutput;
+
+public abstract class AbstractTransformerTag
+    extends TagSupport
+{
+    private String transformer;
+
+    private String transformations;
+
+    public void setTransformations( String transformations )
+    {
+        this.transformations = transformations;
+    }
+
+    public String getTransformations()
+    {
+        return transformations;
+    }
+
+    public void setTransformer( String transformer )
+    {
+        this.transformer = transformer;
+    }
+
+    public String getTransformer()
+    {
+        return transformer;
+    }
+
+    public abstract void doTag( XMLOutput output )
+        throws JellyTagException;
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/AbstractTransformerTag.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,41 @@
+package org.apache.maven.plugins.scm.release.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+import org.apache.commons.jelly.tags.core.CoreTagLibrary;
+
+/**
+ * Release tag library.
+ *
+ * @author <a href="jason@zenplex.com">Jason van Zyl</a>
+ * @version $Id$
+ */
+public class ReleaseTagLibrary
+    extends CoreTagLibrary
+{
+    /**
+     * Create an instance of the {@link ReleaseTagLibrary}, registering related
+     * tag libraries
+     */
+    public ReleaseTagLibrary()
+    {
+        registerTag( "resolve-snapshots", ResolveSnapshotsTag.class );
+        registerTag( "increment-snapshot-version", SnapshotVersionTransformerTag.class );
+        registerTag( "release-version", VersionTransformerTag.class );
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ReleaseTagLibrary.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,44 @@
+package org.apache.maven.plugins.scm.release.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+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.plugins.scm.release.SnapshotResolver;
+
+public class ResolveSnapshotsTag
+    extends AbstractTransformerTag
+{
+    private SnapshotResolver snapshotResolver;
+
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        Project project = (Project) context.getVariable( MavenConstants.MAVEN_POM );
+
+        snapshotResolver = new SnapshotResolver();
+        snapshotResolver.setProject( project.getFile() );
+        snapshotResolver.setVariables( project.getContext().getVariables() );
+        snapshotResolver.setOutputFile( project.getFile() );
+
+        context.setVariable( getTransformer(), snapshotResolver );
+        context.setVariable( getTransformations(), snapshotResolver.getTransformations() );
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/ResolveSnapshotsTag.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,44 @@
+package org.apache.maven.plugins.scm.release.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+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.plugins.scm.release.SnapshotVersionTransformer;
+
+public class SnapshotVersionTransformerTag
+    extends AbstractTransformerTag
+{
+    private SnapshotVersionTransformer transformer;
+
+    public void doTag( XMLOutput output )
+        throws JellyTagException
+    {
+        Project project = (Project) context.getVariable( MavenConstants.MAVEN_POM );
+
+        transformer = new SnapshotVersionTransformer();
+        transformer.setProject( project.getFile() );
+        transformer.setVariables( project.getContext().getVariables() );
+        transformer.setOutputFile( project.getFile() );
+
+        context.setVariable( getTransformer(), transformer );
+        context.setVariable( getTransformations(), transformer.getTransformations() );
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/SnapshotVersionTransformerTag.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java Wed Feb  1 16:34:18 2006
@@ -0,0 +1,68 @@
+package org.apache.maven.plugins.scm.release.jelly;
+
+/* ====================================================================
+ *   Copyright 2001-2004 The Apache Software Foundation.
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ * ====================================================================
+ */
+
+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.plugins.scm.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() );
+    }
+}

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/VersionTransformerTag.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html Wed Feb  1 16:34:18 2006
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<body>
+  <p>
+    Jelly tags used by  org.apache.maven.plugins.scm.release.
+    These classes have originally been imported from the deprecated
+    Maven Release Plugin.
+  </p>
+</body>
+</html>
\ No newline at end of file

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/jelly/package.html
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html?rev=374214&view=auto
==============================================================================
--- maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html (added)
+++ maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html Wed Feb  1 16:34:18 2006
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<body>
+  <p>
+    Utility classes for preparing a release. These classes have originally
+    been imported from the deprecated Maven Release Plugin.
+  </p>
+</body>
+</html>
\ No newline at end of file

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-1/plugins/trunk/scm/src/main/org/apache/maven/plugins/scm/release/package.html
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"