You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2007/09/07 09:54:13 UTC
svn commit: r573494 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/execution/
maven-core/src/main/java/org/apache/maven/settings/ maven-core/src/main/mdo/
maven-core/src/test/java/org/apache/maven/settings/ maven-embedder/src/m...
Author: jvanzyl
Date: Fri Sep 7 00:54:11 2007
New Revision: 573494
URL: http://svn.apache.org/viewvc?rev=573494&view=rev
Log:
o scrub of the settings building, was able to reduce to the need of the build context and use the execution request
directly. eventually i will get it to be the session, along with the profile tools, then all the tools can also
share a common interpolator, which can then be shared by other components instead of having 5 interpolators lying
around causing a great deal of inconsistency.
Removed:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/RuntimeInfo.java
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java
maven/components/trunk/maven-core/src/main/mdo/settings.mdo
maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/SettingsUtilsTest.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/MavenExecutionRequestPopulator.java
maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java Fri Sep 7 00:54:11 2007
@@ -32,7 +32,7 @@
import java.util.Properties;
/**
- * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
+ * @author Jason van Zyl
* @version $Id$
*/
public class DefaultMavenExecutionRequest
@@ -61,6 +61,16 @@
private boolean isProjectPresent = true;
// ----------------------------------------------------------------------------
+ // We need to allow per execution user and global settings as the embedder
+ // might be running in a mode where its executing many threads with totally
+ // different settings.
+ // ----------------------------------------------------------------------------
+
+ private File userSettingsFile;
+
+ private File globalSettingsFile;
+
+ // ----------------------------------------------------------------------------
// Request
// ----------------------------------------------------------------------------
@@ -528,6 +538,32 @@
public MavenExecutionRequest setProjectPresent( boolean projectPresent )
{
isProjectPresent = projectPresent;
+
+ return this;
+ }
+
+ // Settings files
+
+ public File getUserSettingsFile()
+ {
+ return userSettingsFile;
+ }
+
+ public MavenExecutionRequest setUserSettingsFile( File userSettingsFile )
+ {
+ this.userSettingsFile = userSettingsFile;
+
+ return this;
+ }
+
+ public File getGlobalSettingsFile()
+ {
+ return globalSettingsFile;
+ }
+
+ public MavenExecutionRequest setGlobalSettingsFile( File globalSettingsFile )
+ {
+ this.globalSettingsFile = globalSettingsFile;
return this;
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java Fri Sep 7 00:54:11 2007
@@ -189,4 +189,10 @@
boolean isProjectPresent();
MavenExecutionRequest setProjectPresent( boolean isProjectPresent );
+
+ File getUserSettingsFile();
+ MavenExecutionRequest setUserSettingsFile( File userSettingsFile );
+
+ File getGlobalSettingsFile();
+ MavenExecutionRequest setGlobalSettingsFile( File globalSettingsFile );
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java Fri Sep 7 00:54:11 2007
@@ -19,8 +19,7 @@
* under the License.
*/
-import org.apache.maven.context.BuildContextManager;
-import org.apache.maven.context.SystemBuildContext;
+import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
import org.apache.maven.settings.validation.SettingsValidationResult;
@@ -49,18 +48,18 @@
{
private SettingsValidator validator;
- private BuildContextManager manager;
-
- /**
- * @since 2.1
- */
- public Settings buildSettings( File userSettingsFile, File globalSettingsFile )
+ /** @since 2.1 */
+ public Settings buildSettings( MavenExecutionRequest request )
throws IOException, XmlPullParserException
{
+ File userSettingsFile = request.getUserSettingsFile();
+
+ File globalSettingsFile = request.getGlobalSettingsFile();
+
if ( ( globalSettingsFile == null ) && ( userSettingsFile == null ) )
{
getLogger().debug(
- "No settings files provided, and default locations are disabled for this request. Returning empty Settings instance." );
+ "No settings files provided, and default locations are disabled for this request. Returning empty Settings instance." );
return new Settings();
}
@@ -82,37 +81,46 @@
userSettings = new Settings();
}
- validateSettings( globalSettings, globalSettingsFile );
-
- validateSettings( userSettings, userSettingsFile );
-
- SettingsUtils.merge( userSettings, globalSettings, TrackableBase.GLOBAL_LEVEL );
+ validateSettings(
+ globalSettings,
+ globalSettingsFile );
+
+ validateSettings(
+ userSettings,
+ userSettingsFile );
+
+ SettingsUtils.merge(
+ userSettings,
+ globalSettings,
+ TrackableBase.GLOBAL_LEVEL );
- userSettings = interpolate( userSettings );
+ userSettings = interpolate( userSettings, request );
return userSettings;
}
- private Settings interpolate( Settings settings )
+ private Settings interpolate( Settings settings, MavenExecutionRequest request )
throws IOException, XmlPullParserException
{
List activeProfiles = settings.getActiveProfiles();
StringWriter writer = new StringWriter();
-
- new SettingsXpp3Writer().write( writer, settings );
- String serializedSettings = writer.toString();
+ new SettingsXpp3Writer().write(
+ writer,
+ settings );
- SystemBuildContext sysContext = SystemBuildContext.getSystemBuildContext( manager, true );
+ String serializedSettings = writer.toString();
RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
- interpolator.addValueSource( new PropertiesBasedValueSource( sysContext.getSystemProperties() ) );
+ interpolator.addValueSource( new PropertiesBasedValueSource( request.getProperties() ) );
interpolator.addValueSource( new EnvarBasedValueSource() );
- serializedSettings = interpolator.interpolate( serializedSettings, "settings" );
+ serializedSettings = interpolator.interpolate(
+ serializedSettings,
+ "settings" );
Settings result = new SettingsXpp3Reader().read( new StringReader( serializedSettings ) );
@@ -127,52 +135,44 @@
if ( settingsFile == null )
{
getLogger().debug( "Settings file is null. Returning." );
+
return null;
}
Settings settings = null;
- if ( settingsFile.exists() && settingsFile.isFile() )
- {
- getLogger().debug( "Settings file is a proper file. Reading." );
-
- FileReader reader = null;
- try
- {
- reader = new FileReader( settingsFile );
+ FileReader reader = null;
- SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
-
- settings = modelReader.read( reader );
-
- RuntimeInfo rtInfo = new RuntimeInfo( settings );
+ try
+ {
+ reader = new FileReader( settingsFile );
- rtInfo.addLocation( settingsFile.getAbsolutePath() );
+ SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
- settings.setRuntimeInfo( rtInfo );
- }
- catch ( XmlPullParserException e )
- {
- getLogger().error( "Failed to read settings from: " + settingsFile + ". Throwing XmlPullParserException..." );
+ settings = modelReader.read( reader );
+ }
+ catch ( XmlPullParserException e )
+ {
+ getLogger().error( "Failed to read settings from: " + settingsFile + ". Throwing XmlPullParserException..." );
- throw e;
- }
- catch ( IOException e )
- {
- getLogger().error( "Failed to read settings from: " + settingsFile + ". Throwing IOException..." );
+ throw e;
+ }
+ catch ( IOException e )
+ {
+ getLogger().error( "Failed to read settings from: " + settingsFile + ". Throwing IOException..." );
- throw e;
- }
- finally
- {
- IOUtil.close( reader );
- }
+ throw e;
+ }
+ finally
+ {
+ IOUtil.close( reader );
}
return settings;
}
- private void validateSettings( Settings settings, File location )
+ private void validateSettings( Settings settings,
+ File location )
throws IOException
{
SettingsValidationResult validationResult = validator.validate( settings );
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java Fri Sep 7 00:54:11 2007
@@ -19,34 +19,20 @@
* under the License.
*/
+import org.apache.maven.execution.MavenExecutionRequest;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import java.io.File;
import java.io.IOException;
/**
- * Builder for the user or global settings. By default, the settings files are located:
- * <ul>
- * <li>user settings: ${user.home}/settings.xml</li>
- * <li>global settings: ${maven.home}/conf/settings.xml</li>
- * </ul>
- *
* @author jdcasey
+ * @author Jason van Zyl
* @version $Id$
*/
public interface MavenSettingsBuilder
{
String ROLE = MavenSettingsBuilder.class.getName();
- /**
- *
- * @param userSettingsFile
- * @param globalSettingsFile
- * @return a <code>Settings</code> object from the user and global settings file.
- * @throws IOException if any
- * @throws XmlPullParserException if any
- * @since 2.1
- */
- Settings buildSettings( File userSettingsFile, File globalSettingsFile )
+ Settings buildSettings( MavenExecutionRequest request )
throws IOException, XmlPullParserException;
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/SettingsUtils.java Fri Sep 7 00:54:11 2007
@@ -73,27 +73,12 @@
if ( !dominantActiveProfiles.contains( profileId ) )
{
dominantActiveProfiles.add( profileId );
-
- if ( dominant.getRuntimeInfo() != null )
- {
- dominant.getRuntimeInfo().setActiveProfileSourceLevel( profileId, recessiveSourceLevel );
- }
}
}
}
- if ( dominant.getRuntimeInfo() != null && recessive.getRuntimeInfo() != null )
- {
- List recessiveLocations = recessive.getRuntimeInfo().getLocations();
- for ( Iterator it = recessiveLocations.iterator(); it.hasNext(); )
- {
- String path = (String) it.next();
-
- dominant.getRuntimeInfo().addLocation( path );
- }
- }
-
List dominantPluginGroupIds = dominant.getPluginGroups();
+
List recessivePluginGroupIds = recessive.getPluginGroups();
if ( recessivePluginGroupIds != null )
@@ -111,11 +96,6 @@
if ( !dominantPluginGroupIds.contains( pluginGroupId ) )
{
dominantPluginGroupIds.add( pluginGroupId );
-
- if ( dominant.getRuntimeInfo() != null )
- {
- dominant.getRuntimeInfo().setPluginGroupIdSourceLevel( pluginGroupId, recessiveSourceLevel );
- }
}
}
}
@@ -123,11 +103,6 @@
if ( StringUtils.isEmpty( dominant.getLocalRepository() ) )
{
dominant.setLocalRepository( recessive.getLocalRepository() );
-
- if ( dominant.getRuntimeInfo() != null )
- {
- dominant.getRuntimeInfo().setLocalRepositorySourceLevel( recessiveSourceLevel );
- }
}
shallowMergeById( dominant.getMirrors(), recessive.getMirrors(), recessiveSourceLevel );
Modified: maven/components/trunk/maven-core/src/main/mdo/settings.mdo
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/mdo/settings.mdo?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/mdo/settings.mdo (original)
+++ maven/components/trunk/maven-core/src/main/mdo/settings.mdo Fri Sep 7 00:54:11 2007
@@ -392,18 +392,6 @@
return profileMap;
}
-
- private RuntimeInfo runtimeInfo;
-
- public void setRuntimeInfo( RuntimeInfo runtimeInfo )
- {
- this.runtimeInfo = runtimeInfo;
- }
-
- public RuntimeInfo getRuntimeInfo()
- {
- return runtimeInfo;
- }
]]>
</code>
</codeSegment>
Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/SettingsUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/SettingsUtilsTest.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/SettingsUtilsTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/SettingsUtilsTest.java Fri Sep 7 00:54:11 2007
@@ -32,13 +32,9 @@
Settings dominant = new Settings();
dominant.addPluginGroup( "org.apache.maven.plugins" );
dominant.addPluginGroup( "org.codehaus.modello" );
-
- dominant.setRuntimeInfo(new RuntimeInfo(dominant));
Settings recessive = new Settings();
recessive.addPluginGroup( "org.codehaus.plexus" );
-
- recessive.setRuntimeInfo(new RuntimeInfo(recessive));
SettingsUtils.merge( dominant, recessive, Settings.GLOBAL_LEVEL );
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Fri Sep 7 00:54:11 2007
@@ -20,14 +20,12 @@
*/
import org.apache.maven.Maven;
-import org.apache.maven.settings.SettingsConfigurationException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
-import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
@@ -58,6 +56,7 @@
import org.apache.maven.project.MavenProjectBuildingResult;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.settings.Settings;
+import org.apache.maven.settings.SettingsConfigurationException;
import org.apache.maven.settings.io.jdom.SettingsJDOMWriter;
import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
import org.apache.maven.settings.validation.DefaultSettingsValidator;
@@ -78,7 +77,6 @@
import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.logging.LoggerManager;
import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.jdom.Document;
import org.jdom.Element;
@@ -406,7 +404,7 @@
try
{
- request = populator.populateDefaults( request, this );
+ request = populator.populateDefaults( request, configuration );
// This is necessary to make the MavenEmbedderProjectWithExtensionReadingTest work which uses
// a custom type for a dependency like this:
@@ -654,7 +652,7 @@
// simply cascade values in from requests used for individual executions.
request = new DefaultMavenExecutionRequest();
- populator.populateDefaults( request, this );
+ populator.populateDefaults( request, configuration );
}
catch ( ComponentLookupException e )
{
@@ -785,98 +783,6 @@
return result;
}
- // ----------------------------------------------------------------------
- // Local Repository
- // ----------------------------------------------------------------------
-
- public ArtifactRepository createLocalRepository( Settings settings )
- throws MavenEmbedderException
- {
- String localRepositoryPath = null;
-
- if ( configuration.getLocalRepository() != null )
- {
- localRepositoryPath = configuration.getLocalRepository().getAbsolutePath();
- }
-
- if ( StringUtils.isEmpty( localRepositoryPath ) )
- {
- localRepositoryPath = settings.getLocalRepository();
- }
-
- if ( StringUtils.isEmpty( localRepositoryPath ) )
- {
- localRepositoryPath = MavenEmbedder.defaultUserLocalRepository.getAbsolutePath();
- }
-
- return createLocalRepository( localRepositoryPath, MavenEmbedder.DEFAULT_LOCAL_REPO_ID );
- }
-
- public ArtifactRepository createLocalRepository( String url,
- String repositoryId )
- throws MavenEmbedderException
- {
- try
- {
- return createRepository( canonicalFileUrl( url ), repositoryId );
- }
- catch ( IOException e )
- {
- throw new MavenEmbedderException( "Unable to resolve canonical path for local repository " + url, e );
- }
- }
-
- private String canonicalFileUrl( String url )
- throws IOException
- {
- if ( !url.startsWith( "file:" ) )
- {
- url = "file://" + url;
- }
- else if ( url.startsWith( "file:" ) && !url.startsWith( "file://" ) )
- {
- url = "file://" + url.substring( "file:".length() );
- }
-
- // So now we have an url of the form file://<path>
-
- // We want to eliminate any relative path nonsense and lock down the path so we
- // need to fully resolve it before any sub-modules use the path. This can happen
- // when you are using a custom settings.xml that contains a relative path entry
- // for the local repository setting.
-
- File localRepository = new File( url.substring( "file://".length() ) );
-
- if ( !localRepository.isAbsolute() )
- {
- url = "file://" + localRepository.getCanonicalPath();
- }
-
- return url;
- }
-
- public ArtifactRepository createRepository( String url,
- String repositoryId )
- {
- // snapshots vs releases
- // offline = to turning the update policy off
-
- //TODO: we'll need to allow finer grained creation of repositories but this will do for now
-
- String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
-
- String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
-
- ArtifactRepositoryPolicy snapshotsPolicy =
- new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
-
- ArtifactRepositoryPolicy releasesPolicy =
- new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
-
- return artifactRepositoryFactory.createArtifactRepository( repositoryId, url, defaultArtifactRepositoryLayout,
- snapshotsPolicy, releasesPolicy );
- }
-
// ----------------------------------------------------------------------------
// Configuration
// ----------------------------------------------------------------------------
@@ -902,7 +808,7 @@
try
{
- request = populator.populateDefaults( request, this );
+ request = populator.populateDefaults( request, configuration );
}
catch ( MavenEmbedderException e )
{
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java Fri Sep 7 00:54:11 2007
@@ -20,11 +20,12 @@
*/
import org.apache.maven.Maven;
-import org.apache.maven.settings.SettingsConfigurationException;
import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.embedder.Configuration;
import org.apache.maven.embedder.MavenEmbedder;
import org.apache.maven.embedder.MavenEmbedderException;
import org.apache.maven.execution.MavenExecutionRequest;
@@ -38,6 +39,7 @@
import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
+import org.apache.maven.settings.SettingsConfigurationException;
import org.apache.maven.settings.SettingsUtils;
import org.apache.maven.wagon.repository.RepositoryPermissions;
import org.codehaus.plexus.PlexusConstants;
@@ -49,9 +51,11 @@
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import java.io.File;
+import java.io.IOException;
import java.util.Iterator;
import java.util.List;
@@ -62,7 +66,8 @@
*/
public class DefaultMavenExecutionRequestPopulator
extends AbstractLogEnabled
- implements MavenExecutionRequestPopulator, Contextualizable
+ implements MavenExecutionRequestPopulator,
+ Contextualizable
{
private ArtifactRepositoryFactory artifactRepositoryFactory;
@@ -75,33 +80,41 @@
private MavenSettingsBuilder settingsBuilder;
public MavenExecutionRequest populateDefaults( MavenExecutionRequest request,
- MavenEmbedder embedder )
+ Configuration configuration )
throws MavenEmbedderException
{
// Actual POM File
if ( request.getPomFile() == null && request.getBaseDirectory() != null )
{
- File pom = new File( request.getBaseDirectory(), Maven.RELEASE_POMv4 );
+ File pom = new File(
+ request.getBaseDirectory(),
+ Maven.RELEASE_POMv4 );
if ( !pom.exists() )
{
- pom = new File( request.getBaseDirectory(), Maven.POMv4 );
+ pom = new File(
+ request.getBaseDirectory(),
+ Maven.POMv4 );
}
request.setPomFile( pom.getAbsolutePath() );
}
+ request.setGlobalSettingsFile( configuration.getGlobalSettingsFile() );
+
+ request.setUserSettingsFile( configuration.getUserSettingsFile() );
+
if ( request.getSettings() == null )
{
try
{
request.setSettings(
settingsBuilder.buildSettings(
- embedder.getConfiguration().getUserSettingsFile(),
- embedder.getConfiguration().getGlobalSettingsFile() ) );
+ configuration.getUserSettingsFile(),
+ configuration.getGlobalSettingsFile() ) );
}
- catch( Exception e )
+ catch ( Exception e )
{
request.setSettings( new Settings() );
}
@@ -109,7 +122,7 @@
if ( request.getLocalRepository() == null )
{
- request.setLocalRepository( embedder.createLocalRepository( request.getSettings() ) );
+ request.setLocalRepository( createLocalRepository( request.getSettings(), configuration ) );
}
// Repository update policies
@@ -161,7 +174,9 @@
}
catch ( Exception e )
{
- throw new MavenEmbedderException( "Unable to configure Maven for execution", e );
+ throw new MavenEmbedderException(
+ "Unable to configure Maven for execution",
+ e );
}
// BaseDirectory in MavenExecutionRequest
@@ -186,7 +201,9 @@
ProfileManager globalProfileManager = new DefaultProfileManager( container );
- loadSettingsProfiles( globalProfileManager, request.getSettings() );
+ loadSettingsProfiles(
+ globalProfileManager,
+ request.getSettings() );
globalProfileManager.explicitlyActivate( request.getActiveProfiles() );
@@ -213,27 +230,41 @@
throw new SettingsConfigurationException( "Proxy in settings.xml has no host" );
}
- wagonManager.addProxy( proxy.getProtocol(), proxy.getHost(), proxy.getPort(), proxy.getUsername(),
- proxy.getPassword(), proxy.getNonProxyHosts() );
+ wagonManager.addProxy(
+ proxy.getProtocol(),
+ proxy.getHost(),
+ proxy.getPort(),
+ proxy.getUsername(),
+ proxy.getPassword(),
+ proxy.getNonProxyHosts() );
}
for ( Iterator i = settings.getServers().iterator(); i.hasNext(); )
{
Server server = (Server) i.next();
- wagonManager.addAuthenticationInfo( server.getId(), server.getUsername(), server.getPassword(),
- server.getPrivateKey(), server.getPassphrase() );
-
- wagonManager.addPermissionInfo( server.getId(), server.getFilePermissions(), server.getDirectoryPermissions() );
+ wagonManager.addAuthenticationInfo(
+ server.getId(),
+ server.getUsername(),
+ server.getPassword(),
+ server.getPrivateKey(),
+ server.getPassphrase() );
+
+ wagonManager.addPermissionInfo(
+ server.getId(),
+ server.getFilePermissions(),
+ server.getDirectoryPermissions() );
if ( server.getConfiguration() != null )
{
- wagonManager.addConfiguration( server.getId(), (Xpp3Dom) server.getConfiguration() );
+ wagonManager.addConfiguration(
+ server.getId(),
+ (Xpp3Dom) server.getConfiguration() );
}
}
RepositoryPermissions defaultPermissions = new RepositoryPermissions();
-
+
defaultPermissions.setDirectoryMode( "775" );
defaultPermissions.setFileMode( "664" );
@@ -244,7 +275,10 @@
{
Mirror mirror = (Mirror) i.next();
- wagonManager.addMirror( mirror.getId(), mirror.getMirrorOf(), mirror.getUrl() );
+ wagonManager.addMirror(
+ mirror.getId(),
+ mirror.getMirrorOf(),
+ mirror.getUrl() );
}
}
finally
@@ -263,7 +297,8 @@
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
- public void loadSettingsProfiles( ProfileManager profileManager, Settings settings )
+ public void loadSettingsProfiles( ProfileManager profileManager,
+ Settings settings )
{
List settingsProfiles = settings.getProfiles();
@@ -284,4 +319,111 @@
}
}
+ // ----------------------------------------------------------------------
+ // Local Repository
+ // ----------------------------------------------------------------------
+
+ public ArtifactRepository createLocalRepository( Settings settings, Configuration configuration )
+ throws MavenEmbedderException
+ {
+ String localRepositoryPath = null;
+
+ if ( configuration.getLocalRepository() != null )
+ {
+ localRepositoryPath = configuration.getLocalRepository().getAbsolutePath();
+ }
+
+ if ( StringUtils.isEmpty( localRepositoryPath ) )
+ {
+ localRepositoryPath = settings.getLocalRepository();
+ }
+
+ if ( StringUtils.isEmpty( localRepositoryPath ) )
+ {
+ localRepositoryPath = MavenEmbedder.defaultUserLocalRepository.getAbsolutePath();
+ }
+
+ return createLocalRepository(
+ localRepositoryPath,
+ MavenEmbedder.DEFAULT_LOCAL_REPO_ID );
+ }
+
+ public ArtifactRepository createLocalRepository( String url,
+ String repositoryId )
+ throws MavenEmbedderException
+ {
+ try
+ {
+ return createRepository(
+ canonicalFileUrl( url ),
+ repositoryId );
+ }
+ catch ( IOException e )
+ {
+ throw new MavenEmbedderException(
+ "Unable to resolve canonical path for local repository " + url,
+ e );
+ }
+ }
+
+ private String canonicalFileUrl( String url )
+ throws IOException
+ {
+ if ( !url.startsWith( "file:" ) )
+ {
+ url = "file://" + url;
+ }
+ else if ( url.startsWith( "file:" ) && !url.startsWith( "file://" ) )
+ {
+ url = "file://" + url.substring( "file:".length() );
+ }
+
+ // So now we have an url of the form file://<path>
+
+ // We want to eliminate any relative path nonsense and lock down the path so we
+ // need to fully resolve it before any sub-modules use the path. This can happen
+ // when you are using a custom settings.xml that contains a relative path entry
+ // for the local repository setting.
+
+ File localRepository = new File( url.substring( "file://".length() ) );
+
+ if ( !localRepository.isAbsolute() )
+ {
+ url = "file://" + localRepository.getCanonicalPath();
+ }
+
+ return url;
+ }
+
+ public ArtifactRepository createRepository( String url,
+ String repositoryId )
+ {
+ // snapshots vs releases
+ // offline = to turning the update policy off
+
+ //TODO: we'll need to allow finer grained creation of repositories but this will do for now
+
+ String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
+
+ String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
+
+ ArtifactRepositoryPolicy snapshotsPolicy =
+ new ArtifactRepositoryPolicy(
+ true,
+ updatePolicyFlag,
+ checksumPolicyFlag );
+
+ ArtifactRepositoryPolicy releasesPolicy =
+ new ArtifactRepositoryPolicy(
+ true,
+ updatePolicyFlag,
+ checksumPolicyFlag );
+
+ return artifactRepositoryFactory.createArtifactRepository(
+ repositoryId,
+ url,
+ defaultArtifactRepositoryLayout,
+ snapshotsPolicy,
+ releasesPolicy );
+ }
}
Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/MavenExecutionRequestPopulator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/MavenExecutionRequestPopulator.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/MavenExecutionRequestPopulator.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/MavenExecutionRequestPopulator.java Fri Sep 7 00:54:11 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.embedder.MavenEmbedder;
+import org.apache.maven.embedder.Configuration;
import org.apache.maven.embedder.MavenEmbedderException;
import org.apache.maven.execution.MavenExecutionRequest;
@@ -27,6 +27,6 @@
{
String ROLE = MavenExecutionRequestPopulator.class.getName();
- MavenExecutionRequest populateDefaults( MavenExecutionRequest request, MavenEmbedder embedder )
+ MavenExecutionRequest populateDefaults( MavenExecutionRequest request, Configuration configuration )
throws MavenEmbedderException;
}
Modified: maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml Fri Sep 7 00:54:11 2007
@@ -28,10 +28,14 @@
<role-hint>default</role-hint>
</requirement>
<requirement>
+ <role>org.apache.maven.settings.MavenSettingsBuilder</role>
+ </requirement>
+ <requirement>
<role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
</requirement>
<requirement>
- <role>org.apache.maven.settings.MavenSettingsBuilder</role>
+ <role>org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout</role>
+ <role-hint>default</role-hint>
</requirement>
</requirements>
</component>
Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java?rev=573494&r1=573493&r2=573494&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java Fri Sep 7 00:54:11 2007
@@ -59,7 +59,7 @@
if ( result.hasExceptions() )
{
- // Notify user that exceptions have occured.
+ fail( ((Exception)result.getExceptions().get( 0 )).getMessage() );
}
// ----------------------------------------------------------------------------