Author: jvanzyl Date: Tue May 12 20:50:04 2009 New Revision: 774078 URL: http://svn.apache.org/viewvc?rev=774078&view=rev Log: o getting the project dependencies now does not require two passes and we now always resolve from the root artifact. we no longer have to set the dependency artifacts either. with chained local repositories everything will be found in a repository so you don't have to make a distinction between what you have in a reactor/workspace/repo. the artifact will be found.
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=774078&r1=774077&r2=774078&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original) +++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Tue May 12 20:50:04 2009 @@ -41,9 +41,6 @@ import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; import org.apache.maven.plugin.MojoExecution; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugin.PluginConfigurationException; -import org.apache.maven.plugin.PluginExecutionException; import org.apache.maven.plugin.PluginLoaderException; import org.apache.maven.plugin.PluginManager; import org.apache.maven.plugin.PluginParameterExpressionEvaluator; @@ -101,7 +98,6 @@ private Map<String, Lifecycle> phaseToLifecycleMap; public void execute( MavenSession session ) - throws LifecycleExecutionException, MojoFailureException { logger.info( "Build Order:" ); logger.info( "" ); @@ -124,11 +120,6 @@ goals = Collections.singletonList( goal ); } } - - if ( goals.isEmpty() ) - { - throw new LifecycleExecutionException( "\n\nYou must specify at least one goal. Try 'mvn install' to build or 'mvn --help' for options \nSee http://maven.apache.org for more information.\n\n" ); - } for ( MavenProject currentProject : session.getProjects() ) { @@ -140,7 +131,17 @@ for ( String goal : goals ) { - List<MojoExecution> lifecyclePlan = calculateLifecyclePlan( goal, session ); + List<MojoExecution> lifecyclePlan; + + try + { + lifecyclePlan = calculateLifecyclePlan( goal, session ); + } + catch ( LifecycleExecutionException e ) + { + session.getResult().addException( e ); + return; + } //TODO: once we have calculated the build plan then we should accurately be able to download // the project dependencies. Having it happen in the plugin manager is a tangled mess. We can optimize this @@ -153,9 +154,13 @@ } catch ( ArtifactResolutionException e ) { + session.getResult().addException( e ); + return; } catch ( ArtifactNotFoundException e ) { + session.getResult().addException( e ); + return; } if ( logger.isDebugEnabled() ) @@ -182,15 +187,10 @@ logger.info( executionDescription( mojoExecution, currentProject ) ); pluginManager.executeMojo( session, mojoExecution ); } - catch ( PluginExecutionException e ) - { - // This looks like a duplicate - throw new LifecycleExecutionException( "Error executing goal.", e ); - } - catch ( PluginConfigurationException e ) + catch ( Exception e ) { - // If the mojo can't actually be configured - throw new LifecycleExecutionException( "Error executing goal.", e ); + session.getResult().addException( e ); + return; } } } @@ -949,40 +949,25 @@ */ - // This can ultimately be moved up to the Maven component - private void downloadProjectDependencies( MavenSession session, String scope ) throws ArtifactResolutionException, ArtifactNotFoundException { MavenProject project = session.getCurrentProject(); - Artifact artifact = repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging() ); - + Artifact artifact = repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging() ); + ArtifactFilter filter = new ScopeArtifactFilter( scope ); - ArtifactResolutionRequest request = new ArtifactResolutionRequest().setArtifact( artifact ) - // Here the root is not resolved because we are presumably working with a project locally. - .setResolveRoot( false ) + ArtifactResolutionRequest request = new ArtifactResolutionRequest() + .setArtifact( artifact ) .setResolveTransitively( true ) - //.setArtifactDependencies( project.getDependencyArtifacts() ) .setLocalRepository( session.getLocalRepository() ) .setRemoteRepostories( project.getRemoteArtifactRepositories() ) .setManagedVersionMap( project.getManagedVersionMap() ) .setFilter( filter ); ArtifactResolutionResult result = repositorySystem.resolve( request ); - resolutionErrorHandler.throwErrors( request, result ); - - //TODO: this is wrong - project.setArtifacts( result.getArtifacts() ); - - ArtifactRepository localRepository = session.getLocalRepository(); - List<ArtifactRepository> remoteArtifactRepositories = session.getCurrentProject().getRemoteArtifactRepositories(); - - for ( Artifact projectArtifact : session.getCurrentProject().getArtifacts() ) - { - repositorySystem.resolve( new ArtifactResolutionRequest( projectArtifact, localRepository, remoteArtifactRepositories ) ); - } + project.setArtifacts( result.getArtifacts() ); } }