Author: jvanzyl
Date: Sat Dec 30 18:13:58 2006
New Revision: 491363
URL: http://svn.apache.org/viewvc?view=rev&rev=491363
Log:
o Remove the MavenEmbedderConfiguration as this is not used in any of the IDE
integration. The MavenEmbedRequest is what is being used as the session level
configuration.
Removed:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedderConfiguration.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderConfiguration.java
Modified:
maven/components/trunk/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
Modified:
maven/components/trunk/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java?view=diff&rev=491363&r1=491362&r2=491363
==============================================================================
---
maven/components/trunk/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java
(original)
+++
maven/components/trunk/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java
Sat Dec 30 18:13:58 2006
@@ -382,24 +382,23 @@
MavenExecutionRequest request = new DefaultMavenExecutionRequest()
.setBasedir( baseDirectory )
.setGoals( goals )
- .setLocalRepositoryPath( localRepositoryPath )
- .setProperties( executionProperties )
- .setReactorFailureBehavior( reactorFailureBehaviour )
- .setRecursive( recursive )
- .setUseReactor( useReactor )
- .setPomFile( alternatePomFile )
- .setShowErrors( showErrors )
- .setInteractiveMode( interactive )
- .addActiveProfiles( activeProfiles )
- .addInactiveProfiles( inactiveProfiles )
- .setLoggingLevel( loggingLevel )
- //.activateDefaultEventMonitor()
- .setSettings( settings )
- .setTransferListener( transferListener )
- .setOffline( offline )
- .setUpdateSnapshots( updateSnapshots )
- .setNoSnapshotUpdates( noSnapshotUpdates )
- .setGlobalChecksumPolicy( globalChecksumPolicy );
+ .setLocalRepositoryPath( localRepositoryPath ) // default:
~/.m2/repository
+ .setProperties( executionProperties ) // optional
+ .setReactorFailureBehavior( reactorFailureBehaviour ) //
default: fail fast
+ .setRecursive( recursive ) // default: false
+ .setUseReactor( useReactor ) // default: true
+ .setPomFile( alternatePomFile ) // optional
+ .setShowErrors( showErrors ) // default: false
+ .setInteractiveMode( interactive ) // default: false
+ .addActiveProfiles( activeProfiles ) // optional
+ .addInactiveProfiles( inactiveProfiles ) // optional
+ .setLoggingLevel( loggingLevel ) // default: info
+ .setSettings( settings ) // default: ~/.m2/settings.xml
+ .setTransferListener( transferListener ) // default: batch
mode which goes along with interactive
+ .setOffline( offline ) // default: false
+ .setUpdateSnapshots( updateSnapshots ) // default: false
+ .setNoSnapshotUpdates( noSnapshotUpdates ) // default: false
+ .setGlobalChecksumPolicy( globalChecksumPolicy ); // default:
warn
mavenEmbedder.execute( request );
}
Modified:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java?view=diff&rev=491363&r1=491362&r2=491363
==============================================================================
---
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java
(original)
+++
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultMavenEmbedRequest.java
Sat Dec 30 18:13:58 2006
@@ -31,7 +31,6 @@
public class DefaultMavenEmbedRequest
implements MavenEmbedRequest
{
-
private List inactives;
private List actives;
Modified:
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java?view=diff&rev=491363&r1=491362&r2=491363
==============================================================================
---
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java
(original)
+++
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedRequest.java
Sat Dec 30 18:13:58 2006
@@ -19,64 +19,64 @@
import java.net.URL;
import java.util.List;
import java.util.Properties;
+
import org.apache.maven.settings.Settings;
/**
* Configuration of embedder, used when starting up.
+ *
* @author mkleint
*/
-public interface MavenEmbedRequest {
-
+public interface MavenEmbedRequest
+{
/*
- * Add profile to activate.
- */
+ * Add profile to activate.
+ */
MavenEmbedRequest addActiveProfile( String profile );
/*
* Add profile to inactivate.
*/
MavenEmbedRequest addInactiveProfile( String profile );
+
/*
- * Add a list of String instances with names of profiles to activate.
- */
+ * Add a list of String instances with names of profiles to activate.
+ */
MavenEmbedRequest addActiveProfiles( List profiles );
+
/*
- * Add a list of String instances with names of profiles to inactivate.
- */
+ * Add a list of String instances with names of profiles to inactivate.
+ */
MavenEmbedRequest addInactiveProfiles( List profiles );
-
+
/*
- * Set location of the user settings file to use for the embedder.
- */
- MavenEmbedRequest setUserSettingsFile(File user);
+ * Set location of the user settings file to use for the embedder.
+ */
+ MavenEmbedRequest setUserSettingsFile( File user );
/*
* Set location of the global settings file to use for the embedder.
*/
- MavenEmbedRequest setGlobalSettingsFile(File global);
-
+ MavenEmbedRequest setGlobalSettingsFile( File global );
+
/**
* Set a customizer callback implemetation that will be given a chance to
modify the plexus container
* on startup.
*/
- MavenEmbedRequest setConfigurationCustomizer(ContainerCustomizer
customizer);
-
- /**
- * set the system properties to be used during the lifecycle of the
embedder. Excluding the time when executing the project, then the properties
from MavenExecutionRequestare used.
- */
+ MavenEmbedRequest setConfigurationCustomizer( ContainerCustomizer
customizer );
+
+ /** set the system properties to be used during the lifecycle of the
embedder. Excluding the time when executing the project, then the properties
from MavenExecutionRequestare used. */
MavenEmbedRequest setSystemProperties( Properties properties );
-
+
List getActiveProfiles();
List getInactiveProfiles();
-
+
File getUserSettingsFile();
-
+
File getGlobalSettingsFile();
-
+
ContainerCustomizer getContainerCustomizer();
-
+
Properties getSystemProperties();
-
-
}
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?view=diff&rev=491363&r1=491362&r2=491363
==============================================================================
---
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
Sat Dec 30 18:13:58 2006
@@ -29,9 +29,9 @@
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.execution.DefaultMavenExecutionResult;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
-import org.apache.maven.execution.DefaultMavenExecutionResult;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
@@ -50,16 +50,16 @@
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.apache.maven.wagon.events.TransferListener;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.classworlds.ClassWorld;
import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
-import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.component.repository.ComponentDescriptor;
import
org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
-import org.codehaus.plexus.DefaultPlexusContainer;
-import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -72,9 +72,9 @@
import java.io.InputStreamReader;
import java.io.Writer;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import java.util.Collections;
/**
* Class intended to be used by clients who wish to embed Maven into their
applications
@@ -117,10 +117,6 @@
private ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
- // ----------------------------------------------------------------------
- //
- // ----------------------------------------------------------------------
-
private Maven maven;
private MavenTools mavenTools;
@@ -133,8 +129,6 @@
private ArtifactRepository localRepository;
- private File localRepositoryDirectory;
-
private ClassLoader classLoader;
private ClassWorld classWorld;
@@ -145,80 +139,14 @@
// User options
// ----------------------------------------------------------------------
- // release plugin uses this but in IDE there will probably always be some
form of interaction.
- private boolean interactiveMode;
-
- private boolean offline;
-
- private String globalChecksumPolicy;
-
- /**
- * This option determines whether the embedder is to be aligned to the user
- * installation.
- *
- * @deprecated not used
- */
- private boolean alignWithUserInstallation;
-
private boolean started = false;
+ private MavenEmbedRequest embedderRequest;
+
// ----------------------------------------------------------------------
// Accessors
// ----------------------------------------------------------------------
- /** @deprecated not used. */
- public void setInteractiveMode( boolean interactiveMode )
- {
- this.interactiveMode = interactiveMode;
- }
-
- /** @deprecated not used. */
- public boolean isInteractiveMode()
- {
- return interactiveMode;
- }
-
- /** @deprecated not used. */
- public void setOffline( boolean offline )
- {
- this.offline = offline;
- }
-
- /** @deprecated not used. */
- public boolean isOffline()
- {
- return offline;
- }
-
- /** @deprecated not used. */
- public void setGlobalChecksumPolicy( String globalChecksumPolicy )
- {
- this.globalChecksumPolicy = globalChecksumPolicy;
- }
-
- /** @deprecated not used. */
- public String getGlobalChecksumPolicy()
- {
- return globalChecksumPolicy;
- }
-
- /** @deprecated not used. */
- public boolean isAlignWithUserInstallation()
- {
- return alignWithUserInstallation;
- }
-
- /** @deprecated not used */
- public void setAlignWithUserInstallation( boolean
alignWithUserInstallation )
- {
- this.alignWithUserInstallation = alignWithUserInstallation;
- }
-
- /**
- * Set the classloader to use with the maven embedder.
- *
- * @param classLoader
- */
public void setClassLoader( ClassLoader classLoader )
{
this.classLoader = classLoader;
@@ -239,20 +167,6 @@
return classWorld;
}
- /** @deprecated not used. */
- public void setLocalRepositoryDirectory( File localRepositoryDirectory )
- {
- this.localRepositoryDirectory = localRepositoryDirectory;
- }
-
- /**
- *
- */
- public File getLocalRepositoryDirectory()
- {
- return new File( getLocalRepositoryPath( settings ) );
- }
-
public ArtifactRepository getLocalRepository()
{
return localRepository;
@@ -268,18 +182,6 @@
this.logger = logger;
}
- // ----------------------------------------------------------------------
- // Embedder Client Contract
- // ----------------------------------------------------------------------
-
- // ----------------------------------------------------------------------
- // Model
- // ----------------------------------------------------------------------
-
- /**
- * read the model.
- * requires a start()-ed embedder.
- */
public Model readModel( File model )
throws XmlPullParserException, FileNotFoundException, IOException
{
@@ -287,10 +189,6 @@
return modelReader.read( new FileReader( model ) );
}
- /**
- * write the model.
- * requires a start()-ed embedder.
- */
public void writeModel( Writer writer,
Model model )
throws IOException
@@ -303,10 +201,6 @@
// Project
// ----------------------------------------------------------------------
- /**
- * read the project.
- * requires a start()-ed embedder.
- */
public MavenProject readProject( File mavenProject )
throws ProjectBuildingException
{
@@ -314,6 +208,7 @@
return mavenProjectBuilder.build( mavenProject, localRepository,
profileManager );
}
+ /** @deprecated */
public MavenProject readProjectWithDependencies( File mavenProject,
TransferListener
transferListener )
throws ProjectBuildingException, ArtifactResolutionException,
ArtifactNotFoundException
@@ -323,6 +218,7 @@
transferListener );
}
+ /** @deprecated */
public MavenProject readProjectWithDependencies( File mavenProject )
throws ProjectBuildingException, ArtifactResolutionException,
ArtifactNotFoundException
{
@@ -330,6 +226,66 @@
return mavenProjectBuilder.buildWithDependencies( mavenProject,
localRepository, profileManager );
}
+ private MavenExecutionRequest populateMavenExecutionRequestWithDefaults(
MavenExecutionRequest request )
+ {
+ // populate the request from
+ // 1. embed request
+ // 2. defaults
+
+ // Local repository
+
+ if ( request.getLocalRepository() == null )
+ {
+ request.setLocalRepository( localRepository );
+
+ File localRepository = new File(
request.getLocalRepository().getBasedir() );
+
+ if ( !localRepository.exists() )
+ {
+ localRepository.mkdirs();
+ }
+ }
+
+ // Settings
+
+ if ( request.getSettings() == null )
+ {
+ request.setSettings( settings );
+ }
+
+ /*
+ MavenExecutionRequest request = new DefaultMavenExecutionRequest()
+ .setBasedir( baseDirectory )
+ .setGoals( goals )
+ .setLocalRepositoryPath( localRepositoryPath ) // default:
~/.m2/repository
+ .setProperties( executionProperties ) // optional
+ .setReactorFailureBehavior( reactorFailureBehaviour ) // default:
fail fast
+ .setRecursive( recursive ) // default: false
+ .setUseReactor( useReactor ) // default: true
+ .setPomFile( alternatePomFile ) // optional
+ .setShowErrors( showErrors ) // default: false
+ .setInteractiveMode( interactive ) // default: false
+ .addActiveProfiles( activeProfiles ) // optional
+ .addInactiveProfiles( inactiveProfiles ) // optional
+ .setLoggingLevel( loggingLevel ) // default: info
+ .setSettings( settings ) // default: ~/.m2/settings.xml
+ .setTransferListener( transferListener ) // default: batch mode
which goes along with interactive
+ .setOffline( offline ) // default: false
+ .setUpdateSnapshots( updateSnapshots ) // default: false
+ .setNoSnapshotUpdates( noSnapshotUpdates ) // default: false
+ .setGlobalChecksumPolicy( globalChecksumPolicy ); // default: warn
+ */
+
+ // Classify settings as being used for the life of session or request
+
+ if ( request.getLocalRepository() == null )
+ {
+ }
+
+
+ return request;
+ }
+
/**
* This method is used to grab the list of dependencies that belong to a
project so that a UI
* can be populated. For example, a list of libraries that are used by an
Eclipse, Netbeans, or
@@ -348,7 +304,7 @@
{
MavenProject project = null;
- // How can we get rid of the profile manager from the request
+ request = populateMavenExecutionRequestWithDefaults( request );
try
{
@@ -372,36 +328,6 @@
return new DefaultMavenExecutionResult( project,
Collections.EMPTY_LIST );
}
- public List collectProjects( File basedir,
- String[] includes,
- String[] excludes )
- throws MojoExecutionException
- {
- checkStarted();
- List projects = new ArrayList();
-
- List poms = getPomFiles( basedir, includes, excludes );
-
- for ( Iterator i = poms.iterator(); i.hasNext(); )
- {
- File pom = (File) i.next();
-
- try
- {
- MavenProject p = readProject( pom );
-
- projects.add( p );
-
- }
- catch ( ProjectBuildingException e )
- {
- throw new MojoExecutionException( "Error loading " + pom, e );
- }
- }
-
- return projects;
- }
-
// ----------------------------------------------------------------------
// Artifacts
// ----------------------------------------------------------------------
@@ -571,34 +497,6 @@
}
// ----------------------------------------------------------------------
- // Internal utility code
- // ----------------------------------------------------------------------
-
- private List getPomFiles( File basedir,
- String[] includes,
- String[] excludes )
- {
- DirectoryScanner scanner = new DirectoryScanner();
-
- scanner.setBasedir( basedir );
-
- scanner.setIncludes( includes );
-
- scanner.setExcludes( excludes );
-
- scanner.scan();
-
- List poms = new ArrayList();
-
- for ( int i = 0; i < scanner.getIncludedFiles().length; i++ )
- {
- poms.add( new File( basedir, scanner.getIncludedFiles()[i] ) );
- }
-
- return poms;
- }
-
- // ----------------------------------------------------------------------
// Lifecycle
// ----------------------------------------------------------------------
@@ -606,12 +504,13 @@
throws MavenEmbedderException
{
start( new DefaultMavenEmbedRequest() );
-
}
public void start( MavenEmbedRequest req )
throws MavenEmbedderException
{
+ this.embedderRequest = req;
+
//
----------------------------------------------------------------------
// Set the maven.home system property which is need by components like
// the plugin registry builder.
@@ -623,6 +522,20 @@
"A classWorld or classloader must be specified using
setClassLoader|World(ClassLoader)." );
}
+ if ( classWorld == null )
+ {
+ classWorld = new ClassWorld();
+
+ try
+ {
+ classWorld.newRealm( "plexus.core", classLoader );
+ }
+ catch ( DuplicateRealmException e )
+ {
+ // won't happen
+ }
+ }
+
try
{
container = new DefaultPlexusContainer( null, null, null,
classWorld );
@@ -632,7 +545,6 @@
throw new MavenEmbedderException( "Error starting Maven
embedder.", e );
}
-
if ( logger != null )
{
container.setLoggerManager( new MavenEmbedderLoggerManager( new
PlexusLoggerAdapter( logger ) ) );
@@ -640,16 +552,6 @@
try
{
- if ( classWorld == null )
- {
- classWorld = new ClassWorld();
-
- classWorld.newRealm( "plexus.core", classLoader );
- }
-
-// TODO verify that this is not needed...
-// embedder.start( classWorld );
-
if ( req.getContainerCustomizer() != null )
{
req.getContainerCustomizer().customize( container );
@@ -722,10 +624,6 @@
profileManager.loadSettingsProfiles( settings );
}
- catch ( DuplicateRealmException e )
- {
- throw new MavenEmbedderException( "Cannot create Classworld realm
for the embedder.", e );
- }
catch ( ComponentLookupException e )
{
throw new MavenEmbedderException( "Cannot lookup required
component.", e );
@@ -816,6 +714,7 @@
throws MavenExecutionException
{
checkStarted();
+
maven.execute( request );
}
Modified:
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?view=diff&rev=491363&r1=491362&r2=491363
==============================================================================
---
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
(original)
+++
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
Sat Dec 30 18:13:58 2006
@@ -8,11 +8,14 @@
import org.apache.maven.monitor.event.EventMonitor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.util.List;
import java.util.Set;
+import java.util.Arrays;
public class MavenEmbedderTest
extends TestCase
@@ -45,7 +48,7 @@
maven.stop();
}
- public void xtestMavenEmbedder()
+ public void testMavenEmbedder()
throws Exception
{
modelReadingTest();
@@ -66,20 +69,11 @@
FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
- File pomFile = new File( targetDirectory, "pom.xml" );
+ MavenExecutionRequest request = new DefaultMavenExecutionRequest()
+ .setBasedir( targetDirectory )
+ .setGoals( Arrays.asList( new String[]{ "package" } ) );
- MavenProject pom = maven.readProjectWithDependencies( pomFile );
-
- EventMonitor eventMonitor = new DefaultEventMonitor( new
PlexusLoggerAdapter( new MavenEmbedderConsoleLogger() ) );
-
- /*
- maven.execute( pom,
- Collections.singletonList( "package" ),
- eventMonitor,
- new ConsoleDownloadMonitor(),
- new Properties(),
- targetDirectory );
- */
+ maven.execute( request );
File jar = new File( targetDirectory,
"target/embedder-test-project-1.0-SNAPSHOT.jar" );
@@ -110,10 +104,10 @@
// Lifecycle phases
// ----------------------------------------------------------------------
- public void xtestRetrievingLifecyclePhases()
+ public void testRetrievingLifecyclePhases()
throws Exception
{
- List phases = maven.getLifecyclePhases();
+ List phases = maven.getLifecyclePhases();
assertEquals( "validate", (String) phases.get( 0 ) );
@@ -126,12 +120,11 @@
// Repository
// ----------------------------------------------------------------------
- public void xtestLocalRepositoryRetrieval()
+ public void testLocalRepositoryRetrieval()
throws Exception
{
assertNotNull( maven.getLocalRepository().getBasedir() );
}
-
// ----------------------------------------------------------------------
//