diff --git a/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java index f885dd7239..1ef7e43367 100644 --- a/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/maven-cli/src/main/java/org/apache/maven/cli/MavenCli.java @@ -19,13 +19,11 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.ParseException; import org.apache.maven.MavenTransferListener; -import org.apache.maven.SettingsConfigurationException; import org.apache.maven.embedder.MavenEmbedder; import org.apache.maven.embedder.MavenEmbedderException; import org.apache.maven.execution.DefaultMavenExecutionRequest; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.reactor.MavenExecutionException; -import org.apache.maven.settings.Settings; import org.codehaus.plexus.classworlds.ClassWorld; import java.io.File; @@ -49,13 +47,12 @@ public static void main( String[] args ) int result = main( args, classWorld ); - System.exit(result); + System.exit( result ); } - /** - * @noinspection ConfusingMainMethod - */ - public static int main( String[] args, ClassWorld classWorld ) + /** @noinspection ConfusingMainMethod */ + public static int main( String[] args, + ClassWorld classWorld ) { // ---------------------------------------------------------------------- // Setup the command line parser @@ -78,15 +75,15 @@ public static int main( String[] args, ClassWorld classWorld ) // TODO: maybe classworlds could handle this requirement... if ( "1.4".compareTo( System.getProperty( "java.specification.version" ) ) > 0 ) { - System.err.println( "Sorry, but JDK 1.4 or above is required to execute Maven. You appear to be using " - + "Java:" ); - System.err.println( "java version \"" + System.getProperty( "java.version", "" ) - + "\"" ); - System.err.println( System.getProperty( "java.runtime.name", "" ) + " (build " - + System.getProperty( "java.runtime.version", "" ) + ")" ); - System.err.println( System.getProperty( "java.vm.name", "" ) + " (build " - + System.getProperty( "java.vm.version", "" ) + ", " - + System.getProperty( "java.vm.info", "" ) + ")" ); + System.err.println( + "Sorry, but JDK 1.4 or above is required to execute Maven. You appear to be using " + "Java:" ); + System.err.println( + "java version \"" + System.getProperty( "java.version", "" ) + "\"" ); + System.err.println( System.getProperty( "java.runtime.name", "" ) + " (build " + + System.getProperty( "java.runtime.version", "" ) + ")" ); + System.err.println( System.getProperty( "java.vm.name", "" ) + " (build " + + System.getProperty( "java.vm.version", "" ) + ", " + + System.getProperty( "java.vm.info", "" ) + ")" ); return 1; } @@ -129,13 +126,11 @@ else if ( debug ) //** use CLI option values directly in request where possible - MavenEmbedder mavenEmbedder = new MavenEmbedder(); + MavenEmbedder mavenEmbedder; try { - mavenEmbedder.setClassWorld( classWorld ); - - mavenEmbedder.start(); + mavenEmbedder = new MavenEmbedder( classWorld ); } catch ( MavenEmbedderException e ) { @@ -160,20 +155,21 @@ else if ( debug ) usePluginRegistry = false; } - Boolean pluginUpdateOverride = Boolean.FALSE; + boolean pluginUpdateOverride = false; if ( commandLine.hasOption( CLIManager.FORCE_PLUGIN_UPDATES ) || commandLine.hasOption( CLIManager.FORCE_PLUGIN_UPDATES2 ) ) { - pluginUpdateOverride = Boolean.TRUE; + pluginUpdateOverride = true; } else if ( commandLine.hasOption( CLIManager.SUPPRESS_PLUGIN_UPDATES ) ) { - pluginUpdateOverride = Boolean.FALSE; + pluginUpdateOverride = false; } boolean noSnapshotUpdates = false; - if (commandLine.hasOption(CLIManager.SUPRESS_SNAPSHOT_UPDATES)) { + if ( commandLine.hasOption( CLIManager.SUPRESS_SNAPSHOT_UPDATES ) ) + { noSnapshotUpdates = true; } @@ -361,53 +357,33 @@ else if ( quiet ) Properties executionProperties = getExecutionProperties( commandLine ); - File userSettingsPath = mavenEmbedder.getUserSettingsPath( commandLine.getOptionValue( CLIManager.ALTERNATE_USER_SETTINGS ) ); - - File globalSettingsFile = mavenEmbedder.getGlobalSettingsPath(); - - Settings settings = mavenEmbedder.buildSettings( userSettingsPath, - globalSettingsFile, - interactive, - offline, - usePluginRegistry, - pluginUpdateOverride ); - - String localRepositoryPath = mavenEmbedder.getLocalRepositoryPath( settings ); - - // @todo we either make Settings the official configuration mechanism or allow the indiviaul setting in the request - // for each of the things in the settings object. Seems redundant to configure some things via settings and - // some via the request. The Settings object is used in about 16 different places in the core so something - // to consider. - 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 + .setRecursive( recursive ) // default: true + .setUseReactor( useReactor ) // default: false .setPomFile( alternatePomFile ) // optional .setShowErrors( showErrors ) // default: false + // Settings + .setSettingsFile( commandLine.getOptionValue( CLIManager.ALTERNATE_USER_SETTINGS ) ) + //.setLocalRepositoryPath( localRepositoryPath ) // default: ~/.m2/repository .setInteractiveMode( interactive ) // default: false + .setUsePluginRegistry( usePluginRegistry ) + .setOffline( offline ) // default: false + .setUsePluginUpdateOverride( pluginUpdateOverride ) .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 ); } - catch ( SettingsConfigurationException e ) - { - showError( "Error reading settings.xml: " + e.getMessage(), e, showErrors ); - - return 1; - } catch ( MavenExecutionException e ) { showFatalError( "Unable to configure the Maven application", e, showErrors ); @@ -418,7 +394,9 @@ else if ( quiet ) return 0; } - private static void showFatalError( String message, Exception e, boolean show ) + private static void showFatalError( String message, + Exception e, + boolean show ) { System.err.println( "FATAL ERROR: " + message ); if ( show ) @@ -433,7 +411,9 @@ private static void showFatalError( String message, Exception e, boolean show ) } } - private static void showError( String message, Exception e, boolean show ) + private static void showError( String message, + Exception e, + boolean show ) { System.err.println( message ); if ( show ) @@ -456,8 +436,8 @@ private static void showVersion() if ( properties.getProperty( "builtOn" ) != null ) { - System.out.println( "Maven version: " + properties.getProperty( "version", "unknown" ) - + " built on " + properties.getProperty( "builtOn" ) ); + System.out.println( "Maven version: " + properties.getProperty( "version", "unknown" ) + " built on " + + properties.getProperty( "builtOn" ) ); } else { @@ -499,7 +479,8 @@ private static Properties getExecutionProperties( CommandLine commandLine ) return executionProperties; } - private static void setCliProperty( String property, Properties executionProperties ) + private static void setCliProperty( String property, + Properties executionProperties ) { String name; diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index bcf703a49a..e26f052b74 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -122,6 +122,7 @@ public class DefaultMaven public MavenExecutionResult execute( MavenExecutionRequest request ) throws MavenExecutionException { + //*** Move this stuff to the embedder boolean snapshotPolicySet = false; if ( request.isOffline() ) @@ -143,11 +144,6 @@ else if ( request.isNoSnapshotUpdates() ) artifactRepositoryFactory.setGlobalChecksumPolicy( request.getGlobalChecksumPolicy() ); - if ( request.getLocalRepository() == null ) - { - request.setLocalRepository( mavenTools.createLocalRepository( request.getLocalRepositoryPath() ) ); - } - Logger logger = loggerManager.getLoggerForComponent( Mojo.ROLE ); if ( request.getEventMonitors() == null ) @@ -165,6 +161,8 @@ else if ( request.isNoSnapshotUpdates() ) wagonManager.setOnline( !request.getSettings().isOffline() ); + //*** + EventDispatcher dispatcher = new DefaultEventDispatcher( request.getEventMonitors() ); String event = MavenEvents.REACTOR_EXECUTION; diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java index 26bb463a93..f87f0a4a6b 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java @@ -16,16 +16,16 @@ * limitations under the License. */ +import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.monitor.event.EventMonitor; import org.apache.maven.settings.Settings; import org.apache.maven.wagon.events.TransferListener; -import org.apache.maven.artifact.repository.ArtifactRepository; +import java.io.File; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; -import java.util.ArrayList; -import java.io.File; /** * @author Jason van Zyl @@ -38,13 +38,17 @@ public class DefaultMavenExecutionRequest // Settings equivalents // ---------------------------------------------------------------------------- + private Settings settings; + + private String settingsFile; + private ArtifactRepository localRepository; private File localRepositoryPath; - private boolean offline; + private boolean offline = false; - private boolean interactiveMode; + private boolean interactiveMode = true; private List proxies; @@ -59,6 +63,8 @@ public class DefaultMavenExecutionRequest // This is off by default because it causes so many problem. It should just be extracted and redone. private boolean usePluginRegistry = false; + private boolean usePluginUpdateOverride; + // ---------------------------------------------------------------------------- // Request // ---------------------------------------------------------------------------- @@ -67,19 +73,17 @@ public class DefaultMavenExecutionRequest private List goals; - private Settings settings; - - private boolean useReactor; + private boolean useReactor = false; private String pomFile; - private String reactorFailureBehavior; + private String reactorFailureBehavior = REACTOR_FAIL_FAST; private Properties properties; private Date startTime; - private boolean showErrors; + private boolean showErrors = false; private List eventMonitors; @@ -89,20 +93,36 @@ public class DefaultMavenExecutionRequest private TransferListener transferListener; - private int loggingLevel; + private int loggingLevel = LOGGING_LEVEL_INFO; - private boolean updateSnapshots; + private String globalChecksumPolicy = CHECKSUM_POLICY_WARN; - private String globalChecksumPolicy; - - private boolean recursive; + private boolean recursive = true; + + private boolean updateSnapshots = false; + /** + * Suppress SNAPSHOT updates. + * @issue MNG-2681 + */ private boolean noSnapshotUpdates; // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- + public String getSettingsFile() + { + return settingsFile; + } + + public MavenExecutionRequest setSettingsFile( String settingsFile ) + { + this.settingsFile = settingsFile; + + return this; + } + public String getBaseDirectory() { return basedir.getAbsolutePath(); @@ -474,6 +494,20 @@ public MavenExecutionRequest setUsePluginRegistry( boolean usePluginRegistry ) return this; } + public boolean isUsePluginUpdateOverride() + { + return usePluginUpdateOverride; + } + + public MavenExecutionRequest setUsePluginUpdateOverride( boolean usePluginUpdateOverride ) + { + this.usePluginUpdateOverride = usePluginUpdateOverride; + + return this; + } + + // + public MavenExecutionRequest setRecursive( boolean recursive ) { this.recursive = recursive; diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java index f35cc5f6bb..d48b25e621 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java +++ b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java @@ -29,9 +29,8 @@ import java.util.Properties; /** - * @author Jason van Zyl + * @author Jason van Zyl * @version $Id$ - * @todo merge Settings,RuntimeInfo,MavenSession into this. make adapters for everything */ public interface MavenExecutionRequest { @@ -74,149 +73,120 @@ public interface MavenExecutionRequest // ---------------------------------------------------------------------- // Base directory - MavenExecutionRequest setBasedir( File basedir ); - String getBaseDirectory(); // Settings MavenExecutionRequest setSettings( Settings settings ); - Settings getSettings(); // Timing (remove this) MavenExecutionRequest setStartTime( Date start ); - Date getStartTime(); // Goals MavenExecutionRequest setGoals( List goals ); - List getGoals(); // Properties MavenExecutionRequest setProperties( Properties properties ); - Properties getProperties(); // Reactor MavenExecutionRequest setReactorFailureBehavior( String failureBehavior ); - String getReactorFailureBehavior(); MavenExecutionRequest setUseReactor( boolean useReactor ); - boolean useReactor(); // Recursive (really to just process the top-level POM) MavenExecutionRequest setRecursive( boolean recursive ); - boolean isRecursive(); // Event monitors MavenExecutionRequest addEventMonitor( EventMonitor monitor ); - List getEventMonitors(); // Pom MavenExecutionRequest setPomFile( String pomFilename ); - String getPomFile(); // Errors MavenExecutionRequest setShowErrors( boolean showErrors ); - boolean isShowErrors(); // Transfer listeners MavenExecutionRequest setTransferListener( TransferListener transferListener ); - TransferListener getTransferListener(); // Logging MavenExecutionRequest setLoggingLevel( int loggingLevel ); - int getLoggingLevel(); // Update snapshots MavenExecutionRequest setUpdateSnapshots( boolean updateSnapshots ); - boolean isUpdateSnapshots(); MavenExecutionRequest setNoSnapshotUpdates( boolean noSnapshotUpdates ); + boolean isNoSnapshotUpdates(); // Checksum policy MavenExecutionRequest setGlobalChecksumPolicy( String globalChecksumPolicy ); - - boolean isNoSnapshotUpdates(); - String getGlobalChecksumPolicy(); // ---------------------------------------------------------------------------- // Settings equivalents // ---------------------------------------------------------------------------- + // Settings + MavenExecutionRequest setSettingsFile( String settingsFile ); + String getSettingsFile(); + // Local repository - MavenExecutionRequest setLocalRepositoryPath( String localRepository ); - MavenExecutionRequest setLocalRepositoryPath( File localRepository ); - File getLocalRepositoryPath(); - MavenExecutionRequest setLocalRepository( ArtifactRepository repository ); - ArtifactRepository getLocalRepository(); // Interactive MavenExecutionRequest setInteractiveMode( boolean interactive ); - boolean isInteractiveMode(); // Offline MavenExecutionRequest setOffline( boolean offline ); - boolean isOffline(); // Profiles List getProfiles(); - MavenExecutionRequest setProfiles( List profiles ); - MavenExecutionRequest addActiveProfile( String profile ); - MavenExecutionRequest addActiveProfiles( List profiles ); - List getActiveProfiles(); - MavenExecutionRequest addInactiveProfile( String profile ); - MavenExecutionRequest addInactiveProfiles( List profiles ); - List getInactiveProfiles(); // Proxies List getProxies(); - MavenExecutionRequest setProxies( List proxies ); // Servers List getServers(); - MavenExecutionRequest setServers( List servers ); // Mirrors List getMirrors(); - MavenExecutionRequest setMirrors( List mirrors ); // Plugin groups List getPluginGroups(); - MavenExecutionRequest setPluginGroups( List pluginGroups ); // Plugin registry boolean isUsePluginRegistry(); - MavenExecutionRequest setUsePluginRegistry( boolean usePluginRegistry ); + + boolean isUsePluginUpdateOverride(); + MavenExecutionRequest setUsePluginUpdateOverride( boolean usePluginUpdateOverride ); } diff --git a/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java b/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java index ccffebf3cc..48164b91eb 100644 --- a/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java +++ b/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java @@ -53,6 +53,7 @@ import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.PlexusContainerException; import org.codehaus.plexus.classworlds.ClassWorld; +import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.classworlds.realm.DuplicateRealmException; import org.codehaus.plexus.component.repository.ComponentDescriptor; import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException; @@ -63,7 +64,6 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; @@ -81,8 +81,6 @@ */ public class MavenEmbedder { - public static final String userHome = System.getProperty( "user.home" ); - private PlexusContainer container; // ---------------------------------------------------------------------- @@ -91,8 +89,6 @@ public class MavenEmbedder private MavenProjectBuilder mavenProjectBuilder; - private ArtifactRepositoryFactory artifactRepositoryFactory; - private WagonManager wagonManager; private MavenXpp3Reader modelReader; @@ -103,6 +99,8 @@ public class MavenEmbedder private PluginDescriptorBuilder pluginDescriptorBuilder; + private ArtifactRepositoryFactory artifactRepositoryFactory; + private ArtifactFactory artifactFactory; private ArtifactResolver artifactResolver; @@ -121,39 +119,54 @@ public class MavenEmbedder private ArtifactRepository localRepository; - private ClassLoader classLoader; - private ClassWorld classWorld; + private ClassRealm realm; + private MavenEmbedderLogger logger; // ---------------------------------------------------------------------- // User options // ---------------------------------------------------------------------- - private boolean started = false; - private MavenEmbedRequest embedderRequest; + // ---------------------------------------------------------------------------- + // Constructors + // ---------------------------------------------------------------------------- + + public MavenEmbedder( ClassWorld classWorld ) + throws MavenEmbedderException + { + this( classWorld, null ); + } + + public MavenEmbedder( ClassWorld classWorld, MavenEmbedderLogger logger ) + throws MavenEmbedderException + { + this.classWorld = classWorld; + + this.logger = logger; + + start(); + } + + public MavenEmbedder( ClassLoader classLoader ) + throws MavenEmbedderException + { + this( classLoader, null ); + } + + public MavenEmbedder( ClassLoader classLoader, MavenEmbedderLogger logger ) + throws MavenEmbedderException + { + this( new ClassWorld( "plexus.core", classLoader ), logger ); + } + // ---------------------------------------------------------------------- // Accessors // ---------------------------------------------------------------------- - public void setClassLoader( ClassLoader classLoader ) - { - this.classLoader = classLoader; - } - - public ClassLoader getClassLoader() - { - return classLoader; - } - - public void setClassWorld( ClassWorld classWorld ) - { - this.classWorld = classWorld; - } - public ClassWorld getClassWorld() { return classWorld; @@ -177,7 +190,6 @@ public void setLogger( MavenEmbedderLogger logger ) public Model readModel( File model ) throws XmlPullParserException, IOException { - checkStarted(); return modelReader.read( new FileReader( model ) ); } @@ -185,7 +197,6 @@ public void writeModel( Writer writer, Model model ) throws IOException { - checkStarted(); modelWriter.write( writer, model ); } @@ -196,77 +207,62 @@ public void writeModel( Writer writer, public MavenProject readProject( File mavenProject ) throws ProjectBuildingException { - checkStarted(); return mavenProjectBuilder.build( mavenProject, localRepository, profileManager ); } - /** @deprecated */ + /** @deprecated */ public MavenProject readProjectWithDependencies( File mavenProject, TransferListener transferListener ) throws ProjectBuildingException, ArtifactResolutionException, ArtifactNotFoundException { - checkStarted(); return mavenProjectBuilder.buildWithDependencies( mavenProject, localRepository, profileManager, transferListener ); } - /** @deprecated */ + /** @deprecated */ public MavenProject readProjectWithDependencies( File mavenProject ) throws ProjectBuildingException, ArtifactResolutionException, ArtifactNotFoundException { - checkStarted(); return mavenProjectBuilder.buildWithDependencies( mavenProject, localRepository, profileManager ); } - private MavenExecutionRequest populateMavenExecutionRequestWithDefaults( MavenExecutionRequest request ) + private MavenExecutionRequest populateMavenExecutionRequestWithDefaults( MavenExecutionRequest r ) + throws MavenEmbedderException { - // Local repository - if ( request.getLocalRepository() == null ) + // Settings + // Local repository + // TransferListener + // EventMonitor + + if ( r.getSettings() == null ) { - request.setLocalRepository( localRepository ); + File userSettingsPath = mavenTools.getUserSettingsPath( r.getSettingsFile() ); - File localRepository = new File( request.getLocalRepository().getBasedir() ); + File globalSettingsFile = mavenTools.getGlobalSettingsPath(); - if ( !localRepository.exists() ) + try { - localRepository.mkdirs(); + r.setSettings( mavenTools.buildSettings( userSettingsPath, globalSettingsFile, r.isInteractiveMode(), + r.isOffline(), r.isUsePluginRegistry(), + r.isUsePluginUpdateOverride() ) ); + } + catch ( SettingsConfigurationException e ) + { + throw new MavenEmbedderException( "Error processing settings.xml.", e ); } } - // Settings - - if ( request.getSettings() == null ) + if ( r.getLocalRepository() == null ) { - request.setSettings( settings ); + String localRepositoryPath = mavenTools.getLocalRepositoryPath( r.getSettings() ); + + if ( r.getLocalRepository() == null ) + { + r.setLocalRepository( mavenTools.createLocalRepository( new File( localRepositoryPath ) ) ); + } } - /* - MavenExecutionRequest request = new DefaultMavenExecutionRequest() - .setBasedir( baseDirectory ) - .setGoals( goals ) - .setLocalRepositoryPath( localRepositoryPath ) // default: ~/.m2/repository - .setReactorFailureBehavior( reactorFailureBehaviour ) // default: fail fast - .setRecursive( recursive ) // default: false - .setUseReactor( useReactor ) // default: true - .setShowErrors( showErrors ) // default: false - .setInteractiveMode( interactive ) // default: false - .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; + return r; } /** @@ -287,14 +283,18 @@ public MavenExecutionResult readProjectWithDependencies( MavenExecutionRequest r { MavenProject project = null; - request = populateMavenExecutionRequestWithDefaults( request ); - try { + request = populateMavenExecutionRequestWithDefaults( request ); + project = mavenProjectBuilder.buildWithDependencies( new File( request.getPomFile() ), request.getLocalRepository(), profileManager, request.getTransferListener() ); } + catch ( MavenEmbedderException e ) + { + return new DefaultMavenExecutionResult( project, Collections.singletonList( e ) ); + } catch ( ProjectBuildingException e ) { return new DefaultMavenExecutionResult( project, Collections.singletonList( e ) ); @@ -321,7 +321,6 @@ public Artifact createArtifact( String groupId, String scope, String type ) { - checkStarted(); return artifactFactory.createArtifact( groupId, artifactId, version, scope, type ); } @@ -331,7 +330,6 @@ public Artifact createArtifactWithClassifier( String groupId, String type, String classifier ) { - checkStarted(); return artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier ); } @@ -340,7 +338,6 @@ public void resolve( Artifact artifact, ArtifactRepository localRepository ) throws ArtifactResolutionException, ArtifactNotFoundException { - checkStarted(); artifactResolver.resolve( artifact, remoteRepositories, localRepository ); } @@ -367,7 +364,7 @@ public PluginDescriptor getPluginDescriptor( SummaryPluginDescriptor summaryPlug try { InputStream is = - classLoader.getResourceAsStream( "/plugins/" + summaryPluginDescriptor.getArtifactId() + ".xml" ); + realm.getResourceAsStream( "/plugins/" + summaryPluginDescriptor.getArtifactId() + ".xml" ); pluginDescriptor = pluginDescriptorBuilder.build( new InputStreamReader( is ) ); } @@ -397,7 +394,6 @@ private SummaryPluginDescriptor makeMockPlugin( String groupId, public List getLifecyclePhases() throws MavenEmbedderException { - checkStarted(); List phases = new ArrayList(); ComponentDescriptor descriptor = container.getComponentDescriptor( LifecycleExecutor.ROLE ); @@ -459,7 +455,6 @@ public ArtifactRepository createLocalRepository( String url, public ArtifactRepository createRepository( String url, String repositoryId ) { - checkStarted(); // snapshots vs releases // offline = to turning the update policy off @@ -483,7 +478,7 @@ public ArtifactRepository createRepository( String url, // Lifecycle // ---------------------------------------------------------------------- - public void start() + private void start() throws MavenEmbedderException { start( new DefaultMavenEmbedRequest() ); @@ -494,31 +489,6 @@ public void start( MavenEmbedRequest req ) { this.embedderRequest = req; - // ---------------------------------------------------------------------- - // Set the maven.home system property which is need by components like - // the plugin registry builder. - // ---------------------------------------------------------------------- - - if ( classWorld == null && classLoader == null ) - { - throw new IllegalStateException( - "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 ); @@ -578,8 +548,6 @@ public void start( MavenEmbedRequest req ) wagonManager = (WagonManager) container.lookup( WagonManager.ROLE ); - started = true; - // ---------------------------------------------------------------------------- // Settings // @@ -597,7 +565,7 @@ public void start( MavenEmbedRequest req ) req.setGlobalSettingsFile( mavenTools.getGlobalSettingsPath() ); } - settings = mavenTools.buildSettings( req.getUserSettingsFile(), req.getGlobalSettingsFile(), null ); + settings = mavenTools.buildSettings( req.getUserSettingsFile(), req.getGlobalSettingsFile(), false ); resolveParameters( settings ); @@ -671,7 +639,6 @@ private void resolveParameters( Settings settings ) public void stop() throws MavenEmbedderException { - started = false; try { container.release( mavenProjectBuilder ); @@ -688,82 +655,18 @@ public void stop() // Start of new embedder API // ---------------------------------------------------------------------- - public void execute( MavenExecutionRequest request ) + public MavenExecutionResult execute( MavenExecutionRequest request ) throws MavenExecutionException { - checkStarted(); - - maven.execute( request ); - } - - public Settings buildSettings( File userSettingsPath, - File globalSettingsPath, - boolean interactive, - boolean offline, - boolean usePluginRegistry, - Boolean pluginUpdateOverride ) - throws SettingsConfigurationException - { - checkStarted(); - return mavenTools.buildSettings( userSettingsPath, globalSettingsPath, interactive, offline, usePluginRegistry, - pluginUpdateOverride ); - } - - public Settings buildSettings( File userSettingsPath, - File globalSettingsPath, - boolean interactive, - boolean offline, - boolean usePluginRegistry, - boolean pluginUpdateOverride ) - throws SettingsConfigurationException - { - checkStarted(); - return mavenTools.buildSettings( userSettingsPath, globalSettingsPath, interactive, offline, usePluginRegistry, - Boolean.valueOf( pluginUpdateOverride ) ); - } - - public Settings buildSettings( File userSettingsPath, - File globalSettingsPath, - Boolean pluginUpdateOverride ) - throws SettingsConfigurationException - { - checkStarted(); - return mavenTools.buildSettings( userSettingsPath, globalSettingsPath, pluginUpdateOverride ); - } - - public Settings buildSettings( File userSettingsPath, - File globalSettingsPath, - boolean pluginUpdateOverride ) - throws SettingsConfigurationException - { - checkStarted(); - return mavenTools.buildSettings( userSettingsPath, globalSettingsPath, Boolean.valueOf( pluginUpdateOverride ) ); - } - - public File getUserSettingsPath( String optionalSettingsPath ) - { - checkStarted(); - return mavenTools.getUserSettingsPath( optionalSettingsPath ); - } - - public File getGlobalSettingsPath() - { - checkStarted(); - return mavenTools.getGlobalSettingsPath(); - } - - public String getLocalRepositoryPath( Settings settings ) - { - checkStarted(); - return mavenTools.getLocalRepositoryPath( settings ); - } - - private void checkStarted() - { - if ( !started ) + try { - throw new IllegalStateException( - "The embedder is not started, you need to call start() on the embedder prior to calling this method" ); + request = populateMavenExecutionRequestWithDefaults( request ); } + catch ( MavenEmbedderException e ) + { + throw new MavenExecutionException( "Error populating request with default values.", e ); + } + + return maven.execute( request ); } } diff --git a/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java b/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java index d4e3f85c94..c10d8b4cdd 100644 --- a/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java +++ b/maven-tools/src/main/java/org/apache/maven/DefaultMavenTools.java @@ -81,7 +81,7 @@ public Settings buildSettings( File userSettingsPath, boolean interactive, boolean offline, boolean usePluginRegistry, - Boolean pluginUpdateOverride ) + boolean pluginUpdateOverride ) throws SettingsConfigurationException { Settings settings = buildSettings(userSettingsPath, @@ -101,7 +101,7 @@ public Settings buildSettings( File userSettingsPath, public Settings buildSettings( File userSettingsPath, File globalSettingsPath, - Boolean pluginUpdateOverride ) + boolean pluginUpdateOverride ) throws SettingsConfigurationException { Settings settings; @@ -122,7 +122,7 @@ public Settings buildSettings( File userSettingsPath, RuntimeInfo runtimeInfo = new RuntimeInfo( settings ); - runtimeInfo.setPluginUpdateOverride( pluginUpdateOverride ); + runtimeInfo.setPluginUpdateOverride( Boolean.valueOf( pluginUpdateOverride ) ); settings.setRuntimeInfo( runtimeInfo ); @@ -326,7 +326,7 @@ public String getLocalRepositoryPath() false, true, false, - Boolean.FALSE) ); + false ) ); } public ArtifactRepository getLocalRepository() diff --git a/maven-tools/src/main/java/org/apache/maven/MavenTools.java b/maven-tools/src/main/java/org/apache/maven/MavenTools.java index 622d883afa..152bada063 100644 --- a/maven-tools/src/main/java/org/apache/maven/MavenTools.java +++ b/maven-tools/src/main/java/org/apache/maven/MavenTools.java @@ -56,12 +56,12 @@ Settings buildSettings( File userSettingsPath, boolean interactive, boolean offline, boolean usePluginRegistry, - Boolean pluginUpdateOverride ) + boolean pluginUpdateOverride ) throws SettingsConfigurationException; Settings buildSettings( File userSettingsPath, File globalSettingsPath, - Boolean pluginUpdateOverride ) + boolean pluginUpdateOverride ) throws SettingsConfigurationException; // ----------------------------------------------------------------------------