Refactored code
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1752730 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java b/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java
index 60587a1..b9bd983 100644
--- a/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java
+++ b/maven-invoker-plugin/src/main/java/org/apache/maven/plugin/invoker/AbstractInvokerMojo.java
@@ -81,10 +81,10 @@
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 @@
buildInterpolatedFile( settingsFile, interpolatedSettingsFile );
}
- // -----------------------------------------------
- // merge settings file
- // -----------------------------------------------
+ File mergedSettingsFile = mergeSettings( interpolatedSettingsFile );
- 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 );
-
- 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 @@
}
}
+ /**
+ * 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 @@
if ( mavenHome != null )
{
invoker.setMavenHome( mavenHome );
+ // FIXME: Should we really take care of M2_HOME?
request.addShellEnvironment( "M2_HOME", mavenHome.getAbsolutePath() );
}