Author: jvanzyl
Date: Mon Jan 23 18:59:09 2006
New Revision: 371784

URL: http://svn.apache.org/viewcvs?rev=371784&view=rev
Log:
o adding a little IT so that I can work through the issues in the release plugin


Added:
    maven/plugins/trunk/maven-release-plugin/src/it/
    maven/plugins/trunk/maven-release-plugin/src/it/project/
    maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml   (with 
props)
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
   (with props)
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/
    maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/
    
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
   (with props)
    maven/plugins/trunk/maven-release-plugin/src/it/test.sh   (with props)
Modified:
    
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
    
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
    
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
    
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java

Added: maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml?rev=371784&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml (added)
+++ maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml Mon Jan 23 
18:59:09 2006
@@ -0,0 +1,41 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.plugin.release.it</groupId>
+  <artifactId>test-project-one</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>Maven Quick Start Archetype</name>
+  <url>http://maven.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <scm>
+    
<connection>scm:svn:file://${project.file.parentFile.parentFile}/target/svnroot/trunk/project</connection>
+    
<developerConnection>scm:svn:file://${project.file.parentFile.parentFile}/target/svnroot/trunk/project</developerConnection>
+  </scm>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-release-plugin</artifactId>
+          <configuration>
+            
<tagBase>file://${project.file.parentFile.parentFile}/target/svnroot/tags</tagBase>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <distributionManagement>
+    <repository>
+      <id>repo1</id>
+      <name>Maven Central Repository</name>
+      <url>file://${project.file.parentFile.parentFile}/target/repository</url>
+    </repository>
+  </distributionManagement>
+</project>

Propchange: maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-release-plugin/src/it/project/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java?rev=371784&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
 Mon Jan 23 18:59:09 2006
@@ -0,0 +1,13 @@
+package org.apache.maven.plugin.release.it;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/main/java/org/apache/maven/plugin/release/it/App.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java?rev=371784&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
 (added)
+++ 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
 Mon Jan 23 18:59:09 2006
@@ -0,0 +1,38 @@
+package org.apache.maven.plugin.release.it;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-release-plugin/src/it/project/src/test/java/org/apache/maven/plugin/release/it/AppTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/it/test.sh?rev=371784&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/it/test.sh (added)
+++ maven/plugins/trunk/maven-release-plugin/src/it/test.sh Mon Jan 23 18:59:09 
2006
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+rm -rf target
+
+mkdir target
+
+svnadmin create --fs-type fsfs target/svnroot
+
+dir=`readlink -f ${PWD}`
+
+if [ "$1" == "windows" ]; then
+  dir=`cygpath -m $dir`
+  echo setting dir to $dir
+fi
+
+name=project
+
+svn import $name file://${dir}/target/svnroot/trunk/$name -m "import."
+svn mkdir file://${dir}/target/svnroot/tags -m "Creating tags dir."
+
+svn co file://${dir}/target/svnroot/trunk/$name target/project.checkout
+
+cd target/project.checkout
+
+cat pom.xml | sed "s#\${project.file.parentFile.parentFile}#$dir#g" >tmp
+mv tmp pom.xml
+
+svn ci -m 'update scm' pom.xml
+
+rm -rf target
+
+mvn clean install
+ret=$?; if [ $ret != 0 ]; then exit $ret; fi
+
+mvn -e release:prepare -Denv=test
+ret=$?; if [ $ret != 0 ]; then exit $ret; fi
+
+mvn -e release:perform -Denv=test
+ret=$?; if [ $ret != 0 ]; then exit $ret; fi
+

Propchange: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
------------------------------------------------------------------------------
    svn:executable = *

Propchange: maven/plugins/trunk/maven-release-plugin/src/it/test.sh
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/AbstractReleaseMojo.java
 Mon Jan 23 18:59:09 2006
@@ -27,6 +27,8 @@
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.components.interactivity.InputHandler;
 
+import java.io.File;
+
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">John Casey</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
@@ -36,6 +38,13 @@
     extends AbstractMojo
 {
     /**
+     * @parameter expression="${basedir}"
+     * @required
+     * @readonly
+     */
+     protected File basedir;    
+
+    /**
      * @component
      */
     private ScmManager scmManager;
@@ -52,12 +61,12 @@
      */
     private Settings settings;
 
-    
+
     private ScmHelper scmHelper;
 
     protected abstract ReleaseProgressTracker getReleaseProgress()
         throws MojoExecutionException;
-    
+
     protected InputHandler getInputHandler()
     {
         return inputHandler;
@@ -67,7 +76,7 @@
     {
         return settings;
     }
-    
+
     protected ScmHelper getScm( String directory )
         throws MojoExecutionException
     {
@@ -91,19 +100,20 @@
         }
 
         scmHelper.setWorkingDirectory( directory );
-        
+
         loadStarteamUsernamePassword( scmHelper );
 
         return scmHelper;
     }
-    
+
     private ScmManager getScmManager()
     {
         return this.scmManager;
     }
-    
+
     /**
      * Load starteam username/password from settings if needed
+     *
      * @param scmHelper
      * @throws MojoExecutionException
      */
@@ -113,45 +123,60 @@
         if ( scmHelper.getUsername() == null || scmHelper.getPassword() == 
null )
         {
             ScmRepository repository = null;
-     
+
             try
             {
                 repository = getScmManager().makeScmRepository( 
scmHelper.getUrl() );
             }
             catch ( Exception e )
             {
-                throw new MojoExecutionException ( "Can't load the scm 
provider.", e );
+                throw new MojoExecutionException( "Can't load the scm 
provider.", e );
             }
 
             if ( repository.getProvider().equals( "starteam" ) )
             {
                 StarteamScmProviderRepository starteamRepo = 
(StarteamScmProviderRepository) repository.getProviderRepository();
-                    
+
                 String starteamAddress = starteamRepo.getHost();
-                    
+
                 int starteamPort = starteamRepo.getPort();
-                    
+
                 if ( starteamPort != 0 )
                 {
                     starteamAddress += ":" + starteamPort;
                 }
-                    
+
                 Server server = this.settings.getServer( starteamAddress );
-                    
+
                 if ( server != null )
                 {
                     if ( scmHelper.getUsername() == null )
                     {
                         scmHelper.setUsername( server.getUsername() );
                     }
-                
+
                     if ( scmHelper.getPassword() == null )
                     {
                         scmHelper.setPassword( server.getPassword() );
                     }
-                 }
-              }
+                }
+            }
         }
-        
+
     }
+
+    // ----------------------------------------------------------------------
+    // Utility methods
+    // ----------------------------------------------------------------------
+
+    protected void removeReleaseProperties()
+    {
+        File releaseProperties = new File( basedir, 
ReleaseProgressTracker.RELEASE_PROPERTIES );
+
+        if ( releaseProperties.exists() )
+        {
+            releaseProperties.delete();
+        }
+    }
+
 }

Modified: 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PerformReleaseMojo.java
 Mon Jan 23 18:59:09 2006
@@ -23,6 +23,7 @@
 import org.apache.maven.plugins.release.helpers.ScmHelper;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.cli.CommandLineException;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
@@ -49,13 +50,6 @@
     extends AbstractReleaseMojo
 {
     /**
-     * @parameter expression="${basedir}"
-     * @required
-     * @readonly
-     */
-    private File basedir;
-
-    /**
      * Comma or space separated goals 
      * @parameter expression="${goals}"
      */
@@ -96,6 +90,8 @@
         checkout();
 
         runGoals();
+
+        cleanup();
     }
 
     private void checkout()
@@ -246,6 +242,16 @@
             throw new MojoExecutionException( "Can't run goal " + goals, e );
         }
     }
+
+    private void cleanup()
+    {
+        removeReleaseProperties();
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
 
     protected ReleaseProgressTracker getReleaseProgress()
         throws MojoExecutionException

Modified: 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java
 Mon Jan 23 18:59:09 2006
@@ -85,13 +85,6 @@
     private static final String POM = "pom.xml";
 
     /**
-     * @parameter expression="${basedir}"
-     * @required
-     * @readonly
-     */
-    private File basedir;
-
-    /**
      * @parameter expression="${settings.interactiveMode}"
      * @required
      * @readonly
@@ -178,58 +171,22 @@
 
     private List pomFiles;
 
-    private void validateConfiguration()
-        throws MojoExecutionException
-    {
-        if ( StringUtils.isEmpty( urlScm ) )
-        {
-            Model model = ( (MavenProject) reactorProjects.get( 0 ) 
).getModel();
-            if ( model.getScm() != null )
-            {
-                urlScm = model.getScm().getConnection();
-                if ( StringUtils.isEmpty( urlScm ) )
-                {
-                    throw new MojoExecutionException(
-                                                      "Missing required 
setting: scm connection or developerConnection must be specified." );
-                }
-            }
-        }
-    }
-
-    private void checkpoint( String pointName )
-        throws MojoExecutionException
-    {
-        try
-        {
-            getReleaseProgress().checkpoint( pointName );
-        }
-        catch ( IOException e )
-        {
-            getLog().warn( "Error writing checkpoint.", e );
-        }
-    }
-
-    private Set createReactorProjectSet( List reactorProjects )
-    {
-        Set reactorProjectSet = new HashSet();
-
-        for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
-        {
-            MavenProject project = (MavenProject) it.next();
-
-            String versionlessArtifactKey = ArtifactUtils.versionlessKey( 
project.getGroupId(), project.getArtifactId() );
-
-            reactorProjectSet.add( versionlessArtifactKey );
-        }
-
-        return reactorProjectSet;
-    }
-
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
+        // 
----------------------------------------------------------------------
+        // Path of clarity
+        //
+        // You should be able to easily see what the path is that this will 
follow
+        // in order to release a plugin.
+        // 
----------------------------------------------------------------------
+
         validateConfiguration();
 
+        // checkForInitialization()
+
+        // checkForReleasedPrepared()
+
         checkpoint( ReleaseProgressTracker.CP_INITIALIZED );
 
         if ( !getReleaseProgress().verifyCheckpoint( 
ReleaseProgressTracker.CP_PREPARED_RELEASE ) )
@@ -282,8 +239,11 @@
                 for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
                 {
                     MavenProject project = (MavenProject) it.next();
+
                     String projectId = ArtifactUtils.versionlessKey( 
project.getGroupId(), project.getArtifactId() );
+
                     Model model = (Model) releasedProjects.get( projectId );
+
                     updateDependencyManagement( model, project.getFile(), 
"release" );
                 }
 
@@ -328,6 +288,57 @@
 
             checkpoint( ReleaseProgressTracker.CP_PREPARED_RELEASE );
         }
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void validateConfiguration()
+        throws MojoExecutionException
+    {
+        if ( StringUtils.isEmpty( urlScm ) )
+        {
+            Model model = ( (MavenProject) reactorProjects.get( 0 ) 
).getModel();
+            if ( model.getScm() != null )
+            {
+                urlScm = model.getScm().getConnection();
+                if ( StringUtils.isEmpty( urlScm ) )
+                {
+                    throw new MojoExecutionException(
+                                                      "Missing required 
setting: scm connection or developerConnection must be specified." );
+                }
+            }
+        }
+    }
+
+    private void checkpoint( String pointName )
+        throws MojoExecutionException
+    {
+        try
+        {
+            getReleaseProgress().checkpoint( pointName );
+        }
+        catch ( IOException e )
+        {
+            getLog().warn( "Error writing checkpoint.", e );
+        }
+    }
+
+    private Set createReactorProjectSet( List reactorProjects )
+    {
+        Set reactorProjectSet = new HashSet();
+
+        for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
+        {
+            MavenProject project = (MavenProject) it.next();
+
+            String versionlessArtifactKey = ArtifactUtils.versionlessKey( 
project.getGroupId(), project.getArtifactId() );
+
+            reactorProjectSet.add( versionlessArtifactKey );
+        }
+
+        return reactorProjectSet;
     }
 
     private void updateDependencyManagement( Model model, File file, String 
type )

Modified: 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java?rev=371784&r1=371783&r2=371784&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
 (original)
+++ 
maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/helpers/ReleaseProgressTracker.java
 Mon Jan 23 18:59:09 2006
@@ -14,8 +14,7 @@
 
 public class ReleaseProgressTracker
 {
-
-    private static final String RELEASE_PROPERTIES = "release.properties";
+    public static final String RELEASE_PROPERTIES = "release.properties";
 
     private static final String USERNAME = "maven.username";
 


Reply via email to