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