*** 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 parent
ac35496abe
commit
d40f87ea68
5 files changed
+179
-112
No files matched your search
+77
-26
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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