You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by fg...@apache.org on 2006/01/30 23:00:28 UTC

svn commit: r373605 - /maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java

Author: fgiust
Date: Mon Jan 30 14:00:25 2006
New Revision: 373605

URL: http://svn.apache.org/viewcvs?rev=373605&view=rev
Log:
MRELEASE-77 Adding a test only mode, where nothing is checked in into SCM
Now you can run "mvn -Dtestmode=true release:prepare" and relax ;)

Modified:
    maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java

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=373605&r1=373604&r2=373605&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 30 14:00:25 2006
@@ -157,6 +157,16 @@
     private boolean useEditMode;
 
     /**
+     * Test mode: don't checkin or tag anything in the scm repository.
+     * Running <code>mvn -Dtestmode=true release:prepare</code> could be useful in order to check that modifications to
+     * poms and scm operations (only listed in console) are working as expected.
+     * Warning: running this goal in test mode will not checkin anything, but it will modificate your POMs! You will have
+     * to manually rollback any change performed during the test, so be sure to commit everything before!
+     * @parameter expression="${testmode}" default-value="false"
+     */
+    private boolean testmode;
+
+    /**
      * @component
      */
     private PathTranslator pathTranslator;
@@ -183,6 +193,16 @@
 
         validateConfiguration();
 
+        if ( testmode )
+        {
+            getLog()
+                .info(
+                       "\n*****\n"
+                           + "Warning, release:perform is run in TEST MODE.\n"
+                           + "Nothing will be committed or tagged in the repository, but you pom files will be updated!\n"
+                           + "*****" );
+        }
+
         // checkForInitialization()
 
         // checkForReleasedPrepared()
@@ -259,6 +279,22 @@
 
             tagRelease();
 
+            if ( testmode )
+            {
+                getLog().info( "[TESTMODE] You can now verify how POMs have been transformed for release." );
+                getLog()
+                    .info(
+                           "[TESTMODE] Press [return] in order to proceed and to see how POMs are transformed for next development iteration." );
+                try
+                {
+                    getInputHandler().readLine();
+                }
+                catch ( IOException e )
+                {
+                    // ignore
+                }
+            }
+
             if ( !getReleaseProgress().verifyCheckpoint( ReleaseProgressTracker.CP_POM_TRANSORMED_FOR_DEVELOPMENT ) )
             {
                 for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
@@ -333,7 +369,8 @@
         {
             MavenProject project = (MavenProject) it.next();
 
-            String versionlessArtifactKey = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+            String versionlessArtifactKey = ArtifactUtils
+                .versionlessKey( project.getGroupId(), project.getArtifactId() );
 
             reactorProjectSet.add( versionlessArtifactKey );
         }
@@ -666,7 +703,8 @@
         {
             Artifact artifact = (Artifact) i.next();
 
-            String versionlessArtifactKey = ArtifactUtils.versionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
+            String versionlessArtifactKey = ArtifactUtils.versionlessKey( artifact.getGroupId(), artifact
+                .getArtifactId() );
 
             // ----------------------------------------------------------------------
             // We only care about dependencies that we are not processing as part
@@ -675,7 +713,8 @@
             // dependencies that are external to this project.
             // ----------------------------------------------------------------------
 
-            if ( !reactorProjectSet.contains( versionlessArtifactKey ) && ArtifactUtils.isSnapshot( artifact.getVersion() ) )
+            if ( !reactorProjectSet.contains( versionlessArtifactKey )
+                && ArtifactUtils.isSnapshot( artifact.getVersion() ) )
             {
                 snapshotDependencies.add( artifact );
             }
@@ -723,7 +762,7 @@
     }
 
     private void transformPomToReleaseVersionPom( Model model, String projectId, File file, Artifact parentArtifact,
-                                                 List pluginArtifactRepositories )
+                                                  List pluginArtifactRepositories )
         throws MojoExecutionException
     {
         getLog().info( "Transforming " + projectId + " to release" );
@@ -1101,7 +1140,7 @@
                 try
                 {
                     writePom( releasePomFile, releaseProject.getModel(), "release" );
-                    
+
                     writer = new FileWriter( releasePomFile );
 
                     releaseProject.writeModel( writer );
@@ -1123,7 +1162,14 @@
 
                     ScmHelper scm = getScm( basedir.getAbsolutePath() );
 
-                    scm.add( releasePomPath );
+                    if ( !testmode )
+                    {
+                        scm.add( releasePomPath );
+                    }
+                    else
+                    {
+                        getLog().info( "[TESTMODE] adding file: " + releasePomPath );
+                    }
                 }
                 catch ( ScmException e )
                 {
@@ -1285,9 +1331,15 @@
                     releasePomPath = releasePomPath.substring( canonicalBasedir.length() + 1 );
 
                     ScmHelper scm = getScm( basedir.getAbsolutePath() );
+                    if ( !testmode )
+                    {
+                        scm.remove( "Removing for next development iteration.", releasePomPath );
+                    }
+                    else
+                    {
+                        getLog().info( "[TESTMODE] Removing for next development iteration. " + releasePomPath );
+                    }
 
-                    scm.remove( "Removing for next development iteration.", releasePomPath );
-                    
                     pomFiles.remove( currentReleasePomFile );
 
                     currentReleasePomFile.delete();
@@ -1348,7 +1400,14 @@
 
         try
         {
-            scm.checkin( pomFiles, message );
+            if ( !testmode )
+            {
+                scm.checkin( pomFiles, message );
+            }
+            else
+            {
+                getLog().info( "[TESTMODE] Checking in " + pomFiles.size() + " pom.xml files with message: " + message );
+            }
         }
         catch ( ScmException e )
         {
@@ -1521,9 +1580,15 @@
 
                 scm.setTag( tag );
 
-                getLog().info( "Tagging release with the label " + tag + "." );
-
-                scm.tag();
+                if ( !testmode )
+                {
+                    getLog().info( "Tagging release with the label " + tag + "." );
+                    scm.tag();
+                }
+                else
+                {
+                    getLog().info( "[TESTMODE] Tagging release with the label " + tag + "." );
+                }
             }
             catch ( ScmException e )
             {