You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2007/11/10 15:44:03 UTC

svn commit: r593781 - /maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java

Author: hboutemy
Date: Sat Nov 10 06:43:54 2007
New Revision: 593781

URL: http://svn.apache.org/viewvc?rev=593781&view=rev
Log:
[MANTTASKS-82] resolve environment variables in settings file

Modified:
    maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java

Modified: maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java?rev=593781&r1=593780&r2=593781&view=diff
==============================================================================
--- maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java (original)
+++ maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java Sat Nov 10 06:43:54 2007
@@ -31,6 +31,7 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.RuntimeInfo;
 import org.apache.maven.settings.Server;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
@@ -50,11 +51,15 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.interpolation.EnvarBasedValueSource;
+import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.IOException;
 import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -238,15 +243,10 @@
 
     private void loadSettings( File settingsFile )
     {
-        Reader reader = null;
         try
         {
             log( "Loading Maven settings file: " + settingsFile.getPath(), Project.MSG_VERBOSE );
-            reader = ReaderFactory.newXmlReader( settingsFile );
-
-            SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
-
-            settings = modelReader.read( reader );
+            settings = readSettings( settingsFile );
 
             checkSettingsLocalRepository();
         }
@@ -260,12 +260,8 @@
             log( "Error parsing settings file '" + settingsFile + "' - ignoring. Error was: " + e.getMessage(),
                  Project.MSG_WARN );
         }
-        finally
-        {
-            IOUtil.close( reader );
-        }
     }
-    
+
     private void checkSettingsLocalRepository()
     {
         if ( StringUtils.isEmpty( settings.getLocalRepository() ) )
@@ -280,6 +276,54 @@
         if ( !settingsFile.exists() )
             throw new BuildException( "settingsFile does not exist: " + settingsFile.getAbsolutePath() );
         loadSettings( settingsFile );
+    }
+
+    /**
+     * @see org.apache.maven.settings.DefaultMavenSettingsBuilder#readSettings
+     */
+    private Settings readSettings( File settingsFile )
+        throws IOException, XmlPullParserException
+    {
+        Settings settings = null;
+        Reader reader = null;
+        try
+        {
+            reader = ReaderFactory.newXmlReader( settingsFile );
+            StringWriter sWriter = new StringWriter();
+
+            IOUtil.copy( reader, sWriter );
+
+            String rawInput = sWriter.toString();
+
+            try
+            {
+                RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
+                interpolator.addValueSource( new EnvarBasedValueSource() );
+
+                rawInput = interpolator.interpolate( rawInput, "settings" );
+            }
+            catch ( Exception e )
+            {
+                log( "Failed to initialize environment variable resolver. Skipping environment substitution in settings." );
+            }
+
+            StringReader sReader = new StringReader( rawInput );
+
+            SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
+
+            settings = modelReader.read( sReader );
+
+            RuntimeInfo rtInfo = new RuntimeInfo( settings );
+
+            rtInfo.setFile( settingsFile );
+
+            settings.setRuntimeInfo( rtInfo );
+        }
+        finally
+        {
+            IOUtil.close( reader );
+        }
+        return settings;
     }
 
     protected RemoteRepository createAntRemoteRepository( org.apache.maven.model.Repository pomRepository )