You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2003/02/09 18:04:45 UTC
cvs commit: jakarta-turbine-maven/src/plugins-build/release/src/main/org/apache/maven/release PomNodeSelector.java PomDependencyManipulator.java
jvanzyl 2003/02/09 09:04:45
Modified: src/plugins-build/release .cvsignore plugin.jelly
project.xml
Added: src/plugins-build/release/src/main/org/apache/maven/release
PomNodeSelector.java
Removed: src/plugins-build/release/src/main/org/apache/maven/release
PomDependencyManipulator.java
Log:
Revision Changes Path
1.2 +1 -0 jakarta-turbine-maven/src/plugins-build/release/.cvsignore
Index: .cvsignore
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/plugins-build/release/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore 24 Jan 2003 03:45:38 -0000 1.1
+++ .cvsignore 9 Feb 2003 17:04:45 -0000 1.2
@@ -1,3 +1,4 @@
target
velocity.log
maven.log
+*~
1.6 +75 -87 jakarta-turbine-maven/src/plugins-build/release/plugin.jelly
Index: plugin.jelly
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/plugins-build/release/plugin.jelly,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- plugin.jelly 2 Feb 2003 16:47:08 -0000 1.5
+++ plugin.jelly 9 Feb 2003 17:04:45 -0000 1.6
@@ -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>
-
- <!--
- |
- | 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>
-
+ <!--
+ |
+ | 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>
+
+ </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>
1.5 +9 -0 jakarta-turbine-maven/src/plugins-build/release/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/plugins-build/release/project.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- project.xml 9 Feb 2003 15:32:36 -0000 1.4
+++ project.xml 9 Feb 2003 17:04:45 -0000 1.5
@@ -42,6 +42,10 @@
<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>
</dependency>
@@ -49,6 +53,11 @@
<id>xml-apis</id>
<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>
1.1 jakarta-turbine-maven/src/plugins-build/release/src/main/org/apache/maven/release/PomNodeSelector.java
Index: PomNodeSelector.java
===================================================================
package org.apache.maven.release;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache MavenSession" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache MavenSession", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.jaxen.XPath;
import org.jaxen.XPathSyntaxException;
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.
*/
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));
}
}