You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/05/11 10:21:55 UTC

svn commit: r398954 [2/2] - in /maven/plugins/trunk/maven-release-plugin/src: main/java/org/apache/maven/plugins/release/ main/java/org/apache/maven/plugins/release/config/ main/java/org/apache/maven/plugins/release/exec/ main/java/org/apache/maven/plu...

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStore.java Tue May  2 08:01:27 2006
@@ -86,6 +86,8 @@
         releaseConfiguration.setPassphrase( properties.getProperty( "scm.passphrase" ) );
         releaseConfiguration.setTagBase( properties.getProperty( "scm.tagBase" ) );
         releaseConfiguration.setReleaseLabel( properties.getProperty( "scm.tag" ) );
+        releaseConfiguration.setAdditionalArguments( properties.getProperty( "exec.additionalArguments" ) );
+        releaseConfiguration.setPomFileName( properties.getProperty( "exec.pomFileName" ) );
 
         // boolean properties are not written to the properties file because the value from the caller is always used
 
@@ -138,12 +140,38 @@
         Properties properties = new Properties();
         properties.setProperty( "completedPhase", config.getCompletedPhase() );
         properties.setProperty( "scm.url", config.getUrl() );
-        properties.setProperty( "scm.username", config.getUsername() );
-        properties.setProperty( "scm.password", config.getPassword() );
-        properties.setProperty( "scm.privateKey", config.getPrivateKey() );
-        properties.setProperty( "scm.passphrase", config.getPassphrase() );
-        properties.setProperty( "scm.tagBase", config.getTagBase() );
-        properties.setProperty( "scm.tag", config.getReleaseLabel() );
+        if ( config.getUsername() != null )
+        {
+            properties.setProperty( "scm.username", config.getUsername() );
+        }
+        if ( config.getPassword() != null )
+        {
+            properties.setProperty( "scm.password", config.getPassword() );
+        }
+        if ( config.getPrivateKey() != null )
+        {
+            properties.setProperty( "scm.privateKey", config.getPrivateKey() );
+        }
+        if ( config.getPassphrase() != null )
+        {
+            properties.setProperty( "scm.passphrase", config.getPassphrase() );
+        }
+        if ( config.getTagBase() != null )
+        {
+            properties.setProperty( "scm.tagBase", config.getTagBase() );
+        }
+        if ( config.getReleaseLabel() != null )
+        {
+            properties.setProperty( "scm.tag", config.getReleaseLabel() );
+        }
+        if ( config.getAdditionalArguments() != null )
+        {
+            properties.setProperty( "exec.additionalArguments", config.getAdditionalArguments() );
+        }
+        if ( config.getPomFileName() != null )
+        {
+            properties.setProperty( "exec.pomFileName", config.getPomFileName() );
+        }
 
         // boolean properties are not written to the properties file because the value from the caller is always used
 
@@ -164,10 +192,19 @@
             Map.Entry entry = (Map.Entry) i.next();
             Scm scm = (Scm) entry.getValue();
             properties.setProperty( "project.scm." + entry.getKey() + ".connection", scm.getConnection() );
-            properties.setProperty( "project.scm." + entry.getKey() + ".developerConnection",
-                                    scm.getDeveloperConnection() );
-            properties.setProperty( "project.scm." + entry.getKey() + ".url", scm.getUrl() );
-            properties.setProperty( "project.scm." + entry.getKey() + ".tag", scm.getTag() );
+            if ( scm.getDeveloperConnection() != null )
+            {
+                properties.setProperty( "project.scm." + entry.getKey() + ".developerConnection",
+                                        scm.getDeveloperConnection() );
+            }
+            if ( scm.getUrl() != null )
+            {
+                properties.setProperty( "project.scm." + entry.getKey() + ".url", scm.getUrl() );
+            }
+            if ( scm.getTag() != null )
+            {
+                properties.setProperty( "project.scm." + entry.getKey() + ".tag", scm.getTag() );
+            }
         }
 
         OutputStream outStream = null;

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/config/ReleaseConfiguration.java Tue May  2 08:01:27 2006
@@ -133,6 +133,26 @@
      */
     private String releaseLabel;
 
+    /**
+     * Additional arguments to pass to any executed Maven process.
+     */
+    private String additionalArguments;
+
+    /**
+     * The file name of the POM to pass to any executed Maven process.
+     */
+    private String pomFileName;
+
+    public void setPomFileName( String pomFileName )
+    {
+        this.pomFileName = pomFileName;
+    }
+
+    public String getPomFileName()
+    {
+        return pomFileName;
+    }
+
     public boolean isInteractive()
     {
         return interactive;
@@ -299,6 +319,16 @@
         return releaseLabel;
     }
 
+    public String getAdditionalArguments()
+    {
+        return additionalArguments;
+    }
+
+    public void setAdditionalArguments( String additionalArguments )
+    {
+        this.additionalArguments = additionalArguments;
+    }
+
     /**
      * Merge two configurations together. All SCM settings are overridden by the merge configuration, as are the
      * <code>settings</code> and <code>workingDirectory</code> fields. The <code>completedPhase</code> field is used as
@@ -308,8 +338,6 @@
      */
     public void merge( ReleaseConfiguration mergeConfiguration )
     {
-        // TODO [!]: double check if these are the expected behaviours
-
         // Overridden if configured from the caller
         this.url = mergeOverride( this.url, mergeConfiguration.url );
         this.releaseLabel = mergeOverride( this.releaseLabel, mergeConfiguration.releaseLabel );
@@ -318,6 +346,8 @@
         this.password = mergeOverride( this.password, mergeConfiguration.password );
         this.privateKey = mergeOverride( this.privateKey, mergeConfiguration.privateKey );
         this.passphrase = mergeOverride( this.passphrase, mergeConfiguration.passphrase );
+        this.additionalArguments = mergeOverride( this.additionalArguments, mergeConfiguration.additionalArguments );
+        this.pomFileName = mergeOverride( this.pomFileName, mergeConfiguration.pomFileName );
         this.useEditMode = mergeConfiguration.useEditMode;
         this.addSchema = mergeConfiguration.addSchema;
         this.generateReleasePoms = mergeConfiguration.generateReleasePoms;
@@ -401,6 +431,15 @@
         {
             return false;
         }
+        if ( additionalArguments != null ? !additionalArguments.equals( that.additionalArguments )
+            : that.additionalArguments != null )
+        {
+            return false;
+        }
+        if ( pomFileName != null ? !pomFileName.equals( that.pomFileName ) : that.pomFileName != null )
+        {
+            return false;
+        }
         if ( passphrase != null ? !passphrase.equals( that.passphrase ) : that.passphrase != null )
         {
             return false;
@@ -499,6 +538,8 @@
         int result = completedPhase != null ? completedPhase.hashCode() : 0;
         result = 29 * result + ( settings != null ? settings.hashCode() : 0 );
         result = 29 * result + ( releaseLabel != null ? releaseLabel.hashCode() : 0 );
+        result = 29 * result + ( additionalArguments != null ? additionalArguments.hashCode() : 0 );
+        result = 29 * result + ( pomFileName != null ? pomFileName.hashCode() : 0 );
         result = 29 * result + ( tagBase != null ? tagBase.hashCode() : 0 );
         result = 29 * result + ( username != null ? username.hashCode() : 0 );
         result = 29 * result + ( password != null ? password.hashCode() : 0 );

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/ForkedMavenExecutor.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/ForkedMavenExecutor.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/ForkedMavenExecutor.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/ForkedMavenExecutor.java Tue May  2 08:01:27 2006
@@ -34,8 +34,14 @@
     extends AbstractLogEnabled
     implements MavenExecutor
 {
+    /**
+     * Command line factory.
+     */
     private CommandLineFactory commandLineFactory;
 
+    /**
+     * @noinspection UseOfSystemOutOrSystemErr
+     */
     public void executeGoals( File workingDirectory, String goals, boolean interactive, String arguments )
         throws MavenExecutorException
     {
@@ -63,7 +69,6 @@
             cl.createArgument().setValue( "--batch-mode" );
         }
 
-        // TODO [!] check that callers split parameters that could formerly be comma-separated
         if ( !StringUtils.isEmpty( arguments ) )
         {
             cl.createArgument().setLine( arguments );
@@ -91,14 +96,13 @@
         }
 */
 
-        // TODO: do these still stream?
-        StreamConsumer stdOut = new CommandLineUtils.StringStreamConsumer();
+        StreamConsumer stdOut = new TeeConsumer( System.out );
 
-        StreamConsumer stdErr = new CommandLineUtils.StringStreamConsumer();
+        StreamConsumer stdErr = new TeeConsumer( System.err );
 
         try
         {
-            getLogger().debug( cl.toString() );
+            getLogger().info( "Executing: " + cl.toString() );
 
             int result = CommandLineUtils.executeCommandLine( cl, stdOut, stdErr );
 

Added: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/TeeConsumer.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/TeeConsumer.java?rev=398954&view=auto
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/TeeConsumer.java (added)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/TeeConsumer.java Tue May  2 08:01:27 2006
@@ -0,0 +1,66 @@
+package org.apache.maven.plugins.release.exec;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+import java.io.PrintStream;
+
+/**
+ * Consumer that both funnels to System.out/err, and stores in an internal buffer.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public class TeeConsumer
+    implements StreamConsumer
+{
+    private PrintStream stream;
+
+    /**
+     * @noinspection StringBufferField
+     */
+    private StringBuffer content = new StringBuffer();
+
+    private static final String LS = System.getProperty( "line.separator" );
+
+    private String indent;
+
+    public TeeConsumer( PrintStream stream )
+    {
+        this( stream, "    " );
+    }
+
+    public TeeConsumer( PrintStream stream, String indent )
+    {
+        this.stream = stream;
+
+        this.indent = indent;
+    }
+
+    public void consumeLine( String line )
+    {
+        stream.println( indent + line );
+
+        content.append( line );
+        content.append( LS );
+    }
+
+    public String getContent()
+    {
+        return content.toString();
+    }
+}

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

Propchange: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/exec/TeeConsumer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/AbstractRewritePomsPhase.java Tue May  2 08:01:27 2006
@@ -95,9 +95,7 @@
         {
             MavenProject project = (MavenProject) it.next();
 
-            String projectId = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
-
-            getLogger().info( "Transforming " + projectId + " to release" );
+            getLogger().info( "Transforming '" + project.getName() + "'..." );
 
             transformProject( project, releaseConfiguration, simulate );
         }

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/GenerateReleasePomsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/GenerateReleasePomsPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/GenerateReleasePomsPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/GenerateReleasePomsPhase.java Tue May  2 08:01:27 2006
@@ -34,6 +34,8 @@
     {
         if ( releaseConfiguration.isGenerateReleasePoms() )
         {
+            getLogger().info( "Generating release POMs..." );
+
             generateReleasePoms();
         }
     }

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RemoveReleasePomsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RemoveReleasePomsPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RemoveReleasePomsPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RemoveReleasePomsPhase.java Tue May  2 08:01:27 2006
@@ -33,6 +33,52 @@
         throws ReleaseExecutionException
     {
         // TODO [!]: implement
+        getLogger().info( "Removing release POMs..." );
+
+/*
+        File currentReleasePomFile = null;
+
+        try
+        {
+            String canonicalBasedir = trimPathForScmCalculation( basedir );
+
+            for ( Iterator it = reactorProjects.iterator(); it.hasNext(); )
+            {
+                MavenProject project = (MavenProject) it.next();
+
+                currentReleasePomFile = new File( project.getFile().getParentFile(), RELEASE_POM );
+
+                String releasePomPath = trimPathForScmCalculation( currentReleasePomFile );
+
+                releasePomPath = releasePomPath.substring( canonicalBasedir.length() + 1 );
+
+                ScmHelper scm = getScm( basedir.getAbsolutePath() );
+                if ( !dryRun )
+                {
+                    scm.remove( "Removing for next development iteration.", releasePomPath );
+                }
+                else
+                {
+                    getLog().info( "[TESTMODE] Removing for next development iteration. " + releasePomPath );
+                }
+
+                pomFiles.remove( currentReleasePomFile );
+
+                currentReleasePomFile.delete();
+            }
+        }
+        catch ( ScmException e )
+        {
+            throw new MojoExecutionException( "Cannot remove " + currentReleasePomFile + " from development HEAD.",
+                                                                      e );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Cannot remove " + currentReleasePomFile + " from development HEAD.",
+                                              e );
+        }
+
+*/
     }
 
     public void simulate( ReleaseConfiguration releaseConfiguration )

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RunGoalsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RunGoalsPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RunGoalsPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/RunGoalsPhase.java Tue May  2 08:01:27 2006
@@ -49,6 +49,9 @@
         {
             if ( !StringUtils.isEmpty( goals ) )
             {
+                // TODO [!]: fix logging
+                getLogger().info( "Executing goals '" + goals + "'..." );
+
                 mavenExecutor.executeGoals( releaseConfiguration.getWorkingDirectory(), goals,
                                             releaseConfiguration.isInteractive() );
             }
@@ -62,6 +65,7 @@
     public void simulate( ReleaseConfiguration releaseConfiguration )
         throws ReleaseExecutionException
     {
+        // TODO [!]: fix logging
         getLogger().info(
             "Executing tests - since this is simulation mode it is testing the original project, not the rewritten ones" );
 

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCheckModificationsPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCheckModificationsPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCheckModificationsPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCheckModificationsPhase.java Tue May  2 08:01:27 2006
@@ -62,7 +62,7 @@
     public void execute( ReleaseConfiguration releaseConfiguration )
         throws ReleaseExecutionException
     {
-        getLogger().info( "Verifying that there are no local modifications" );
+        getLogger().info( "Verifying that there are no local modifications..." );
 
         ScmRepository repository;
         ScmProvider provider;

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCommitPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCommitPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCommitPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmCommitPhase.java Tue May  2 08:01:27 2006
@@ -62,7 +62,7 @@
     {
         validateConfiguration( releaseConfiguration );
 
-        getLogger().info( "Checking in modified POMs" );
+        getLogger().info( "Checking in modified POMs..." );
 
         ScmRepository repository;
         ScmProvider provider;

Modified: maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmTagPhase.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmTagPhase.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmTagPhase.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/phase/ScmTagPhase.java Tue May  2 08:01:27 2006
@@ -49,7 +49,7 @@
     {
         validateConfiguration( releaseConfiguration );
 
-        getLogger().info( "Tagging release with the label " + releaseConfiguration.getReleaseLabel() + "." );
+        getLogger().info( "Tagging release with the label " + releaseConfiguration.getReleaseLabel() + "..." );
 
         ScmRepository repository;
         ScmProvider provider;

Modified: maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/plugins/trunk/maven-release-plugin/src/main/resources/META-INF/plexus/components.xml Tue May  2 08:01:27 2006
@@ -30,6 +30,12 @@
           <role-hint>properties</role-hint>
           <field-name>configStore</field-name>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.plugins.release.scm.ScmRepositoryConfigurator</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.plugins.release.exec.MavenExecutor</role>
+        </requirement>
       </requirements>
       <configuration>
         <phases>
@@ -228,6 +234,11 @@
     <component>
       <role>org.apache.maven.plugins.release.exec.MavenExecutor</role>
       <implementation>org.apache.maven.plugins.release.exec.ForkedMavenExecutor</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.plugins.release.exec.CommandLineFactory</role>
+        </requirement>
+      </requirements>
     </component>
     <component>
       <role>org.apache.maven.plugins.release.exec.CommandLineFactory</role>

Modified: maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/config/PropertiesReleaseConfigurationStoreTest.java Tue May  2 08:01:27 2006
@@ -54,6 +54,9 @@
         assertEquals( "Expected passphrase of 'passphrase'", "passphrase", config.getPassphrase() );
         assertEquals( "Expected tag base of 'tagBase'", "tagBase", config.getTagBase() );
         assertEquals( "Expected tag 'tag'", "tag", config.getReleaseLabel() );
+        assertEquals( "Expected additional arguments 'additional-arguments'", "additional-arguments",
+                      config.getAdditionalArguments() );
+        assertEquals( "Expected POM file name 'my-pom.xml'", "pom-file-name", config.getPomFileName() );
         assertNull( "Expected no workingDirectory", config.getWorkingDirectory() );
         assertNull( "Expected no settings", config.getSettings() );
         assertFalse( "Expected default generateReleasePoms", config.isGenerateReleasePoms() );
@@ -154,6 +157,25 @@
         assertEquals( "compare configuration", config, rereadConfiguration );
     }
 
+    public void testWriteToNewFileRequiredOnly()
+        throws ReleaseConfigurationStoreException
+    {
+        File file = getTestFile( "target/test-classes/new-release.properties" );
+        file.delete();
+        assertFalse( "Check file doesn't exist", file.exists() );
+        store.setPropertiesFile( file );
+
+        ReleaseConfiguration config = new ReleaseConfiguration();
+        config.setCompletedPhase( "completed-phase-write" );
+        config.setUrl( "url-write" );
+
+        store.write( config );
+
+        ReleaseConfiguration rereadConfiguration = store.read();
+
+        assertEquals( "compare configuration", config, rereadConfiguration );
+    }
+
     public void testOverwriteFile()
         throws ReleaseConfigurationStoreException
     {
@@ -179,8 +201,10 @@
         config.setPassword( "password-write" );
         config.setPrivateKey( "private-key-write" );
         config.setPassphrase( "passphrase-write" );
-        config.setTagBase( "tag-base" );
-        config.setReleaseLabel( "tag" );
+        config.setTagBase( "tag-base-write" );
+        config.setReleaseLabel( "tag-write" );
+        config.setAdditionalArguments( "additional-args-write" );
+        config.setPomFileName( "pom-file-name-write" );
 
         config.mapReleaseVersion( "groupId:artifactId", "1.0" );
         config.mapDevelopmentVersion( "groupId:artifactId", "1.1-SNAPSHOT" );
@@ -192,6 +216,11 @@
         scm.setTag( "tag-write" );
         config.mapOriginalScmInfo( "groupId:artifactId", scm );
 
+        scm = new Scm();
+        scm.setConnection( "connection-write" );
+        // omit optional elements
+        config.mapOriginalScmInfo( "groupId:subproject1", scm );
+
         return config;
     }
 
@@ -205,6 +234,8 @@
         assertNull( "Expected no passphrase", config.getPassphrase() );
         assertNull( "Expected no tagBase", config.getTagBase() );
         assertNull( "Expected no tag", config.getReleaseLabel() );
+        assertNull( "Expected no additional arguments", config.getAdditionalArguments() );
+        assertNull( "Expected no pom file name", config.getPomFileName() );
 
         assertNull( "Expected no workingDirectory", config.getWorkingDirectory() );
         assertNull( "Expected no settings", config.getSettings() );

Modified: maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/phase/RewritePomsForReleasePhaseTest.java Tue May  2 08:01:27 2006
@@ -44,8 +44,8 @@
     protected ReleaseConfiguration createConfigurationFromProjects( String path, boolean copyFiles )
         throws Exception
     {
-        ReleaseConfiguration releaseConfiguration = createConfigurationFromProjects( "rewrite-for-release/", path,
-                                                                                     copyFiles );
+        ReleaseConfiguration releaseConfiguration =
+            createConfigurationFromProjects( "rewrite-for-release/", path, copyFiles );
         releaseConfiguration.setUrl( "scm:svn:file://localhost/tmp/scm-repo" );
         releaseConfiguration.setReleaseLabel( "release-label" );
         releaseConfiguration.setWorkingDirectory( getTestFile( "target/test/checkout" ) );
@@ -117,4 +117,46 @@
     {
         // nothing to do
     }
+
+    /**
+     * Test for writePom with special characters in the pom
+     * Currently breaking under Linux Continuum box
+     *
+     * @throws Exception
+     */
+//    public void testWritePom()
+//        throws Exception
+//    {
+//        System.out.println( Charset.defaultCharset().name() );
+//        System.out.println( System.getProperty("file.encoding") );
+//
+//        Model model = new Model();
+//        Contributor contributor = new Contributor();
+//        /* hack to avoid problems with sources encoding, this string contains accentuated "aeiou" in UTF-8 */
+//        String s = new String( new byte[] { -61, -95, -61, -87, -61, -83, -61, -77, -61, -70 }, "UTF-8" );
+//
+//        contributor.setName( s );
+//        model.addContributor( contributor );
+//        File file = new File( mojo.basedir, "testWritePom.xml" );
+//
+//        scmHelperMock.expects( new MethodNameMatcher( new IsAnything() ) );
+//        scmHelperMock.expects( new MethodNameMatcher( "getScmManager" ) ).will( new ReturnStub( scmManager ) );
+//
+//        mojo.writePom( file, model, "version" );
+//
+//        MavenXpp3Reader pomReader = new MavenXpp3Reader();
+//
+//        Model readModel = pomReader.read( new BufferedReader( new FileReader( file ) ) );
+//        Contributor readContributor = (Contributor) readModel.getContributors().get( 0 );
+//
+//        String msg = "POM is written in a wrong encoding: \n"
+//            + "Expected bytes: " + Arrays.toString( contributor.getName().getBytes() ) + "\n"
+//            + "Returned bytes: " + Arrays.toString( readContributor.getName().getBytes() ) + "\n"
+//            + "JVM default charset: " + Charset.defaultCharset() + "\n"
+//            + "System property file.encoding: " + System.getProperty("file.encoding") + "\n";
+//        assertEquals( msg, contributor.getName(), readContributor.getName() );
+//
+//        scmHelperMock.verify();
+//    }
+// TODO [!]
 }

Modified: maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties?rev=398954&r1=398953&r2=398954&view=diff
==============================================================================
--- maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties (original)
+++ maven/plugins/trunk/maven-release-plugin/src/test/resources/release.properties Tue May  2 08:01:27 2006
@@ -23,6 +23,9 @@
 scm.tagBase=tagBase
 scm.tag=tag
 
+exec.additionalArguments=additional-arguments
+exec.pomFileName=pom-file-name
+
 project.rel.groupId\:artifactId1=2.0
 project.rel.groupId\:artifactId2=3.0
 project.dev.groupId\:artifactId1=2.1-SNAPSHOT