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() ); } - // ---------------------------------------------------------------------- //