*** 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:
jvanzyl
2003-02-09 17:04:45 +00:00
parent ac35496abe
commit d40f87ea68
5 changed files with 179 additions and 112 deletions

View File

@@ -1,3 +1,4 @@
target
velocity.log
maven.log
*~

View File

@@ -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>

View File

@@ -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>

View File

@@ -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));
}
}

View 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>