*** 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 committed 2003-02-09 17:04:45 +00:00
1 parent ac35496abe
commit d40f87ea68
5 files changed
+179 -112

No files matched your search

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