You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2016/07/14 19:34:54 UTC

svn commit: r1752730 - /maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java

Author: khmarbaise
Date: Thu Jul 14 19:34:53 2016
New Revision: 1752730

URL: http://svn.apache.org/viewvc?rev=1752730&view=rev
Log:
Refactored code

Modified:
    maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java

Modified: maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java?rev=1752730&r1=1752729&r2=1752730&view=diff
==============================================================================
--- maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java (original)
+++ maven/plugins/trunk/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java Thu Jul 14 19:34:53 2016
@@ -81,10 +81,10 @@ import org.apache.maven.shared.invoker.I
 import org.apache.maven.shared.invoker.Invoker;
 import org.apache.maven.shared.invoker.MavenCommandLineBuilder;
 import org.apache.maven.shared.invoker.MavenInvocationException;
-import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.apache.maven.shared.scriptinterpreter.RunErrorException;
 import org.apache.maven.shared.scriptinterpreter.RunFailureException;
 import org.apache.maven.shared.scriptinterpreter.ScriptRunner;
+import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.codehaus.plexus.interpolation.InterpolationException;
 import org.codehaus.plexus.interpolation.Interpolator;
 import org.codehaus.plexus.interpolation.MapBasedValueSource;
@@ -1160,71 +1160,8 @@ public abstract class AbstractInvokerMoj
             buildInterpolatedFile( settingsFile, interpolatedSettingsFile );
         }
 
-        // -----------------------------------------------
-        // merge settings file
-        // -----------------------------------------------
-
-        SettingsXpp3Writer settingsWriter = new SettingsXpp3Writer();
-
-        File mergedSettingsFile;
-        Settings mergedSettings = this.settings;
-        if ( mergeUserSettings )
-        {
-            if ( interpolatedSettingsFile != null )
-            {
-                // Have to merge the specified settings file (dominant) and the one of the invoking Maven process
-                try
-                {
-                    SettingsBuildingRequest request = new DefaultSettingsBuildingRequest();
-                    request.setGlobalSettingsFile( interpolatedSettingsFile );
-
-                    Settings dominantSettings = settingsBuilder.build( request ).getEffectiveSettings();
-                    Settings recessiveSettings = cloneSettings();
-                    SettingsUtils.merge( dominantSettings, recessiveSettings, TrackableBase.USER_LEVEL );
+        File mergedSettingsFile = mergeSettings( interpolatedSettingsFile );
 
-                    mergedSettings = dominantSettings;
-                    getLog().debug( "Merged specified settings file with settings of invoking process" );
-                }
-                catch ( SettingsBuildingException e )
-                {
-                    throw new MojoExecutionException( "Could not read specified settings file", e );
-                }
-            }
-        }
-        if ( this.settingsFile != null && !mergeUserSettings )
-        {
-            mergedSettingsFile = interpolatedSettingsFile;
-        }
-        else
-        {
-            try
-            {
-                mergedSettingsFile = File.createTempFile( "invoker-settings", ".xml" );
-
-                FileWriter fileWriter = null;
-                try
-                {
-                    fileWriter = new FileWriter( mergedSettingsFile );
-                    settingsWriter.write( fileWriter, mergedSettings );
-                    fileWriter.close();
-                    fileWriter = null;
-                }
-                finally
-                {
-                    IOUtil.close( fileWriter );
-                }
-
-                if ( getLog().isDebugEnabled() )
-                {
-                    getLog().debug( "Created temporary file for invoker settings.xml: "
-                        + mergedSettingsFile.getAbsolutePath() );
-                }
-            }
-            catch ( IOException e )
-            {
-                throw new MojoExecutionException( "Could not create temporary file for invoker settings.xml", e );
-            }
-        }
         final File finalSettingsFile = mergedSettingsFile;
 
         if ( mavenHome != null )
@@ -1308,6 +1245,89 @@ public abstract class AbstractInvokerMoj
         }
     }
 
+    /**
+     * Merge the settings file
+     * 
+     * @param interpolatedSettingsFile The interpolated settings file.
+     * @return The merged settings file.
+     * @throws MojoExecutionException Fail the build in case the merged settings file can't be created.
+     */
+    private File mergeSettings( File interpolatedSettingsFile )
+        throws MojoExecutionException
+    {
+        File mergedSettingsFile;
+        Settings mergedSettings = this.settings;
+        if ( mergeUserSettings )
+        {
+            if ( interpolatedSettingsFile != null )
+            {
+                // Have to merge the specified settings file (dominant) and the one of the invoking Maven process
+                try
+                {
+                    SettingsBuildingRequest request = new DefaultSettingsBuildingRequest();
+                    request.setGlobalSettingsFile( interpolatedSettingsFile );
+
+                    Settings dominantSettings = settingsBuilder.build( request ).getEffectiveSettings();
+                    Settings recessiveSettings = cloneSettings();
+                    SettingsUtils.merge( dominantSettings, recessiveSettings, TrackableBase.USER_LEVEL );
+
+                    mergedSettings = dominantSettings;
+                    getLog().debug( "Merged specified settings file with settings of invoking process" );
+                }
+                catch ( SettingsBuildingException e )
+                {
+                    throw new MojoExecutionException( "Could not read specified settings file", e );
+                }
+            }
+        }
+
+        if ( this.settingsFile != null && !mergeUserSettings )
+        {
+            mergedSettingsFile = interpolatedSettingsFile;
+        }
+        else
+        {
+            try
+            {
+                mergedSettingsFile = writeMergedSettingsFile( mergedSettings );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoExecutionException( "Could not create temporary file for invoker settings.xml", e );
+            }
+        }
+        return mergedSettingsFile;
+    }
+
+    private File writeMergedSettingsFile( Settings mergedSettings )
+        throws IOException
+    {
+        File mergedSettingsFile;
+        mergedSettingsFile = File.createTempFile( "invoker-settings", ".xml" );
+
+        SettingsXpp3Writer settingsWriter = new SettingsXpp3Writer();
+
+        FileWriter fileWriter = null;
+        try
+        {
+            fileWriter = new FileWriter( mergedSettingsFile );
+            settingsWriter.write( fileWriter, mergedSettings );
+            fileWriter.close();
+            fileWriter = null;
+        }
+        finally
+        {
+            IOUtil.close( fileWriter );
+        }
+
+        if ( getLog().isDebugEnabled() )
+        {
+            getLog().debug( "Created temporary file for invoker settings.xml: "
+                + mergedSettingsFile.getAbsolutePath() );
+        }
+        return mergedSettingsFile;
+    }
+
     private Settings cloneSettings()
     {
         Settings recessiveSettings = SettingsUtils.copySettings( this.settings );
@@ -1694,6 +1714,7 @@ public abstract class AbstractInvokerMoj
             if ( mavenHome != null )
             {
                 invoker.setMavenHome( mavenHome );
+                // FIXME: Should we really take care of M2_HOME?
                 request.addShellEnvironment( "M2_HOME", mavenHome.getAbsolutePath() );
             }