*** empty log message ***
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@112868 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
target
|
||||
velocity.log
|
||||
maven.log
|
||||
*~
|
||||
|
||||
@@ -2,12 +2,8 @@
|
||||
|
||||
<project
|
||||
xmlns:j="jelly:core"
|
||||
xmlns:maven="jelly:maven"
|
||||
xmlns:define="jelly:define"
|
||||
xmlns:deploy="deploy"
|
||||
xmlns:util="jelly:util"
|
||||
xmlns:log="jelly:log"
|
||||
xmlns:m="maven">
|
||||
xmlns:i="jelly:interaction"
|
||||
xmlns:r="jelly:org.apache.maven.release.jelly.ReleaseTagLibrary">
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- R E L E A S E T A G L I B R A R Y -->
|
||||
@@ -38,86 +34,78 @@
|
||||
| of the latest snapshot.
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
|
||||
| Convert SNAPSHOT version identifiers to real snapshot versions.
|
||||
| You cannot leave SNAPSHOT version identifiers in the POM for a
|
||||
| release.
|
||||
|
|
||||
-->
|
||||
<goal name="convert-snapshots">
|
||||
|
||||
<j:useBean var="snapshots" class="java.util.ArrayList"/>
|
||||
|
||||
<j:forEach var="dependency" items="${pom.dependencies}">
|
||||
<j:if test="${dependency.version == 'SNAPSHOT'}">
|
||||
<j:set var="dummy" value="${snapshots.add(dependency)}"/>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
|
||||
<j:if test="${size(snapshots) > 0}">
|
||||
<j:forEach var="dependency" items="${snapshots}">
|
||||
<get
|
||||
dest="${maven.build.dir}/${dependency.artifactId}-snapshot-version"
|
||||
usetimestamp="false"
|
||||
ignoreerrors="true"
|
||||
src="http://www.ibiblio.org/${dependency.groupId}/jars/${dependency.artifactId}-snapshot-version"
|
||||
/>
|
||||
</j:forEach>
|
||||
</j:if>
|
||||
|
||||
|
||||
</goal>
|
||||
<!--
|
||||
|
|
||||
| Convert SNAPSHOT version identifiers to real snapshot versions.
|
||||
| You cannot leave SNAPSHOT version identifiers in the POM for a
|
||||
| release.
|
||||
|
|
||||
-->
|
||||
<goal name="convert-snapshots">
|
||||
|
||||
<r:snapshot-dependencies var="snapshots"/>
|
||||
|
||||
<j:if test="${size(snapshots) > 0}">
|
||||
<j:forEach var="dependency" items="${snapshots}">
|
||||
<get
|
||||
dest="${maven.build.dir}/${dependency.artifactId}-snapshot-version"
|
||||
usetimestamp="false"
|
||||
ignoreerrors="true"
|
||||
src="http://www.ibiblio.org/${dependency.groupId}/jars/${dependency.artifactId}-snapshot-version"
|
||||
/>
|
||||
</j:forEach>
|
||||
</j:if>
|
||||
|
||||
<!--
|
||||
|
|
||||
| Validate the POM for a release. This consists of:
|
||||
|
|
||||
| 1) Making sure all SNAPSHOT version identifiers are converted.
|
||||
|
|
||||
-->
|
||||
<goal name="validate-pom-for-release">
|
||||
|
||||
<j:useBean var="snapshots" class="java.util.ArrayList"/>
|
||||
|
||||
<j:forEach var="dependency" items="${pom.dependencies}">
|
||||
<j:if test="${dependency.version == 'SNAPSHOT'}">
|
||||
<j:set var="dummy" value="${snapshots.add(dependency)}"/>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
|
||||
<j:if test="${size(snapshots) > 0}">
|
||||
<echo/>
|
||||
<echo>The following dependencies have SNAPSHOT identifiers:</echo>
|
||||
<echo/>
|
||||
<j:forEach var="dependency" items="${snapshots}">
|
||||
<echo>${dependency.artifactId}</echo>
|
||||
</j:forEach>
|
||||
<fail message="">
|
||||
</fail>
|
||||
</j:if>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
|
|
||||
| Release
|
||||
|
|
||||
-->
|
||||
<goal name="release">
|
||||
|
||||
<attainGoal name="validate-pom-for-release"/>
|
||||
<attainGoal name="deploy:pom"/>
|
||||
|
||||
<!--
|
||||
|
|
||||
| Build the binary and source distributions. We need to alter
|
||||
| the process so that we can build everything to check and then
|
||||
| deploy instead of having to build everything all the time.
|
||||
|
|
||||
-->
|
||||
|
||||
</goal>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
|
|
||||
| Validate the POM for a release. This consists of:
|
||||
|
|
||||
| 1) Making sure all SNAPSHOT version identifiers are converted.
|
||||
|
|
||||
-->
|
||||
<goal name="validate-pom-for-release">
|
||||
|
||||
<j:useBean var="snapshots" class="java.util.ArrayList"/>
|
||||
|
||||
<j:forEach var="dependency" items="${pom.dependencies}">
|
||||
<j:if test="${dependency.version == 'SNAPSHOT'}">
|
||||
<j:set var="dummy" value="${snapshots.add(dependency)}"/>
|
||||
</j:if>
|
||||
</j:forEach>
|
||||
|
||||
<j:if test="${size(snapshots) > 0}">
|
||||
<echo/>
|
||||
<echo>The following dependencies have SNAPSHOT identifiers:</echo>
|
||||
<echo/>
|
||||
<j:forEach var="dependency" items="${snapshots}">
|
||||
<echo>${dependency.artifactId}</echo>
|
||||
</j:forEach>
|
||||
<fail message="">
|
||||
</fail>
|
||||
</j:if>
|
||||
|
||||
</goal>
|
||||
|
||||
<!--
|
||||
|
|
||||
| Release
|
||||
|
|
||||
-->
|
||||
<goal name="release">
|
||||
|
||||
<attainGoal name="validate-pom-for-release"/>
|
||||
<attainGoal name="deploy:pom"/>
|
||||
|
||||
<!--
|
||||
|
|
||||
| Build the binary and source distributions. We need to alter
|
||||
| the process so that we can build everything to check and then
|
||||
| deploy instead of having to build everything all the time.
|
||||
|
|
||||
-->
|
||||
|
||||
</goal>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -41,6 +41,10 @@
|
||||
<id>jaxen</id>
|
||||
<version>1.0-FCS-full</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<id>commons-jelly</id>
|
||||
<version>SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<id>saxpath</id>
|
||||
<version>1.0-FCS</version>
|
||||
@@ -50,6 +54,11 @@
|
||||
<version>1.0.b2</version>
|
||||
<url>http://xml.apache.org/xerces2-j/</url>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-jelly</groupId>
|
||||
<artifactId>commons-jelly-tags-interaction</artifactId>
|
||||
<version>SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -55,7 +55,6 @@ package org.apache.maven.release;
|
||||
*
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
import org.dom4j.Document;
|
||||
import org.dom4j.Node;
|
||||
import org.dom4j.io.SAXReader;
|
||||
@@ -67,26 +66,84 @@ import org.jaxen.JaxenException;
|
||||
import org.jaxen.dom4j.Dom4jXPath;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* 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 PomDependencyManipulator
|
||||
public class PomNodeSelector
|
||||
{
|
||||
/** POM document */
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/** Xpath expression to extract dependencies with SNAPSHOT version identifiers */
|
||||
private String snapshotXPath = "/project/dependencies/dependency[version='SNAPSHOT']";
|
||||
|
||||
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.
|
||||
@@ -97,19 +154,13 @@ public class PomDependencyManipulator
|
||||
throws Exception
|
||||
{
|
||||
SAXReader reader = new SAXReader();
|
||||
Document doc = reader.read( pom );
|
||||
XPath xpath = new Dom4jXPath( snapshotXPath );
|
||||
List results = xpath.selectNodes( doc );
|
||||
Document doc = reader.read( getPom() );
|
||||
|
||||
for ( Iterator i = results.iterator(); i.hasNext(); )
|
||||
{
|
||||
Object object = i.next();
|
||||
|
||||
if (object instanceof Node)
|
||||
{
|
||||
Node version = (Node) object;
|
||||
version.setText("non-snapshot-version");
|
||||
}
|
||||
}
|
||||
// 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));
|
||||
}
|
||||
}
|
||||
18
release/src/test-data/test-pom.xml
Normal file
18
release/src/test-data/test-pom.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<project>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<id>A</id>
|
||||
<version>SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<id>B</id>
|
||||
<version>SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<id>C</id>
|
||||
<version>SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
Reference in New Issue
Block a user