You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/08/31 00:28:17 UTC

svn commit: r809431 - in /maven/components/trunk: maven-compat/src/main/java/org/apache/maven/artifact/resolver/ maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ maven-core/src/main/java/org/apache/maven/ maven-core/src/main/java/o...

Author: bentmann
Date: Sun Aug 30 22:28:16 2009
New Revision: 809431

URL: http://svn.apache.org/viewvc?rev=809431&view=rev
Log:
[MNG-4331] Add new mojo annotation @requiresDependencyCollection to grab dependency tree without files

Modified:
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AbstractScopeArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/CumulativeScopeArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
    maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
    maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
    maven/components/trunk/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
    maven/components/trunk/maven-plugin-api/src/test/resources/plugin.xml

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java Sun Aug 30 22:28:16 2009
@@ -54,7 +54,9 @@
 
     private RepositoryCache cache;
 
-    private ArtifactFilter filter;
+    private ArtifactFilter collectionFilter;
+
+    private ArtifactFilter resolutionFilter;
 
     // Needs to go away
     private List<ResolutionListener> listeners = new ArrayList<ResolutionListener>();
@@ -131,14 +133,39 @@
         return this;
     }
 
-    public ArtifactFilter getFilter()
+    /**
+     * Gets the artifact filter that controls traversal of the dependency graph.
+     * 
+     * @return The filter used to determine which of the artifacts in the dependency graph should be traversed or
+     *         {@code null} to collect all transitive dependencies.
+     */
+    public ArtifactFilter getCollectionFilter()
+    {
+        return collectionFilter;
+    }
+
+    public ArtifactResolutionRequest setCollectionFilter( ArtifactFilter filter )
+    {
+        this.collectionFilter = filter;
+
+        return this;
+    }
+
+    /**
+     * Gets the artifact filter that controls downloading of artifact files. This filter operates on those artifacts
+     * that have been included by the {@link #getCollectionFilter()}.
+     * 
+     * @return The filter used to determine which of the artifacts should have their files resolved or {@code null} to
+     *         resolve the files for all collected artifacts.
+     */
+    public ArtifactFilter getResolutionFilter()
     {
-        return filter;
+        return resolutionFilter;
     }
 
-    public ArtifactResolutionRequest setFilter( ArtifactFilter filter )
+    public ArtifactResolutionRequest setResolutionFilter( ArtifactFilter filter )
     {
-        this.filter = filter;
+        this.resolutionFilter = filter;
 
         return this;
     }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Sun Aug 30 22:28:16 2009
@@ -339,7 +339,7 @@
             .setManagedVersionMap( managedVersions )
             .setLocalRepository( localRepository )
             .setRemoteRepositories( remoteRepositories )
-            .setFilter( filter )
+            .setCollectionFilter( filter )
             .setListeners( listeners );
 
         return resolveWithExceptions( request );
@@ -379,7 +379,8 @@
         Set<Artifact> artifacts = request.getArtifactDependencies();
         Map managedVersions = request.getManagedVersionMap();
         List<ResolutionListener> listeners = request.getListeners();
-        ArtifactFilter filter = request.getFilter();                       
+        ArtifactFilter collectionFilter = request.getCollectionFilter();                       
+        ArtifactFilter resolutionFilter = request.getResolutionFilter();                       
         
         //TODO: hack because metadata isn't generated in m2e correctly and i want to run the maven i have in the workspace
         if ( source == null )
@@ -489,7 +490,9 @@
         } 
 
         // After the collection we will have the artifact object in the result but they will not be resolved yet.
-        result = artifactCollector.collect( artifacts, rootArtifact, managedVersions, request, source, filter, listeners, null );
+        result =
+            artifactCollector.collect( artifacts, rootArtifact, managedVersions, request, source, collectionFilter,
+                                       listeners, null );
                         
         // We have metadata retrieval problems, or there are cycles that have been detected
         // so we give this back to the calling code and let them deal with this information
@@ -506,7 +509,10 @@
             {
                 try
                 {
-                    resolve( artifact, request, request.getTransferListener(), false );
+                    if ( resolutionFilter == null || resolutionFilter.include( artifact ) )
+                    {
+                        resolve( artifact, request, request.getTransferListener(), false );
+                    }
                 }
                 catch ( ArtifactNotFoundException anfe )
                 {

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AbstractScopeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AbstractScopeArtifactFilter.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AbstractScopeArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AbstractScopeArtifactFilter.java Sun Aug 30 22:28:16 2009
@@ -41,7 +41,7 @@
 
     private boolean systemScope;
 
-    void addScope( String scope )
+    void addScopeInternal( String scope )
     {
         if ( Artifact.SCOPE_COMPILE.equals( scope ) )
         {

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/CumulativeScopeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/CumulativeScopeArtifactFilter.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/CumulativeScopeArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/CumulativeScopeArtifactFilter.java Sun Aug 30 22:28:16 2009
@@ -48,10 +48,31 @@
     {
         this.scopes = new HashSet<String>();
 
-        if ( scopes != null )
+        addScopes( scopes );
+    }
+
+    /**
+     * Creates a new filter that combines the specified filters.
+     * 
+     * @param filters The filters to combine, may be {@code null}.
+     */
+    public CumulativeScopeArtifactFilter( CumulativeScopeArtifactFilter... filters )
+    {
+        this.scopes = new HashSet<String>();
+
+        if ( filters != null )
         {
-            this.scopes.addAll( scopes );
+            for ( CumulativeScopeArtifactFilter filter : filters )
+            {
+                addScopes( filter.getScopes() );
+            }
+        }
+    }
 
+    private void addScopes( Collection<String> scopes )
+    {
+        if ( scopes != null )
+        {
             for ( String scope : scopes )
             {
                 addScope( scope );
@@ -59,6 +80,13 @@
         }
     }
 
+    private void addScope( String scope )
+    {
+        this.scopes.add( scope );
+
+        addScopeInternal( scope );
+    }
+
     public Set<String> getScopes()
     {
         return scopes;

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java Sun Aug 30 22:28:16 2009
@@ -35,7 +35,7 @@
     {
         this.scope = scope;
 
-        addScope( scope );
+        addScopeInternal( scope );
     }
 
     public String getScope()

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java Sun Aug 30 22:28:16 2009
@@ -34,7 +34,6 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
 import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.CumulativeScopeArtifactFilter;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
@@ -54,16 +53,30 @@
     @Requirement
     private ResolutionErrorHandler resolutionErrorHandler;
 
-    public Set<Artifact> resolve( MavenProject project, Collection<String> scopes, MavenSession session )
+    public Set<Artifact> resolve( MavenProject project, Collection<String> scopesToResolve, MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        return resolve( Collections.singleton( project ), scopes, session );
+        return resolve( Collections.singleton( project ), scopesToResolve, session );
     }
 
-    public Set<Artifact> resolve( Collection<? extends MavenProject> projects, Collection<String> scopes,
+    public Set<Artifact> resolve( MavenProject project, Collection<String> scopesToCollect,
+                                  Collection<String> scopesToResolve, MavenSession session )
+        throws ArtifactResolutionException, ArtifactNotFoundException
+    {
+        return resolve( Collections.singleton( project ), scopesToCollect, scopesToResolve, session );
+    }
+
+    public Set<Artifact> resolve( Collection<? extends MavenProject> projects, Collection<String> scopesToResolve,
                                   MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
+        return resolve( projects, null, scopesToResolve, session );
+    }
+
+    public Set<Artifact> resolve( Collection<? extends MavenProject> projects, Collection<String> scopesToCollect,
+                                  Collection<String> scopesToResolve, MavenSession session )
+        throws ArtifactResolutionException, ArtifactNotFoundException
+    {
         Set<Artifact> resolved = new LinkedHashSet<Artifact>();
 
         if ( projects == null || projects.isEmpty() )
@@ -102,14 +115,16 @@
         }        
         */
 
-        ArtifactFilter scopeFilter = new CumulativeScopeArtifactFilter( scopes );
+        CumulativeScopeArtifactFilter resolutionScopeFilter = new CumulativeScopeArtifactFilter( scopesToResolve );
 
-        ArtifactFilter filter = scopeFilter; 
+        CumulativeScopeArtifactFilter collectionScopeFilter = new CumulativeScopeArtifactFilter( scopesToCollect );
+        collectionScopeFilter = new CumulativeScopeArtifactFilter( collectionScopeFilter, resolutionScopeFilter );
 
         ArtifactResolutionRequest request = new ArtifactResolutionRequest()
             .setResolveRoot( false )
             .setResolveTransitively( true )
-            .setFilter( filter )
+            .setCollectionFilter( collectionScopeFilter )
+            .setResolutionFilter( resolutionScopeFilter )
             .setLocalRepository( session.getLocalRepository() )
             .setOffline( session.isOffline() )
             .setCache( session.getRepositoryCache() );

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/ProjectDependenciesResolver.java Sun Aug 30 22:28:16 2009
@@ -35,11 +35,24 @@
      * Resolves the transitive dependencies of the specified project.
      * 
      * @param project The project whose dependencies should be resolved, must not be {@code null}.
-     * @param scopes The dependency scopes that should be resolved, may be {@code null}.
+     * @param scopesToResolve The dependency scopes that should be resolved, may be {@code null}.
+     * @param session The current build session, must not be {@code null}.
+     * @return The transitive dependencies of the specified project that match the requested scopes, never {@code null}.
+     */
+    public Set<Artifact> resolve( MavenProject project, Collection<String> scopesToResolve, MavenSession session )
+        throws ArtifactResolutionException, ArtifactNotFoundException;
+
+    /**
+     * Resolves the transitive dependencies of the specified project.
+     * 
+     * @param project The project whose dependencies should be resolved, must not be {@code null}.
+     * @param scopesToCollect The dependency scopes that should be collected, may be {@code null}.
+     * @param scopesToResolve The dependency scopes that should be collected and also resolved, may be {@code null}.
      * @param session The current build session, must not be {@code null}.
      * @return The transitive dependencies of the specified project that match the requested scopes, never {@code null}.
      */
-    public Set<Artifact> resolve( MavenProject project, Collection<String> scopes, MavenSession session )
+    public Set<Artifact> resolve( MavenProject project, Collection<String> scopesToCollect,
+                                  Collection<String> scopesToResolve, MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /**

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Sun Aug 30 22:28:16 2009
@@ -371,7 +371,9 @@
         {
             Collection<String> scopesToResolve = executionPlan.getRequiredResolutionScopes();
 
-            artifacts = projectDependenciesResolver.resolve( project, scopesToResolve, session );
+            Collection<String> scopesToCollect = executionPlan.getRequiredCollectionScopes();
+
+            artifacts = projectDependenciesResolver.resolve( project, scopesToCollect, scopesToResolve, session );
         }
         catch ( MultipleArtifactsNotFoundException e )
         {
@@ -672,6 +674,8 @@
 
         Set<String> requiredDependencyResolutionScopes = new TreeSet<String>();
 
+        Set<String> requiredDependencyCollectionScopes = new TreeSet<String>();
+
         for ( Object task : taskSegment.tasks )
         {
             if ( task instanceof GoalTask )
@@ -721,10 +725,12 @@
 
             calculateForkedExecutions( mojoExecution, session, project, new HashSet<MojoDescriptor>() );
 
-            collectDependencyResolutionScopes( requiredDependencyResolutionScopes, mojoExecution );
+            collectDependencyRequirements( requiredDependencyResolutionScopes, requiredDependencyCollectionScopes,
+                                           mojoExecution );
         }
 
-        return new MavenExecutionPlan( mojoExecutions, requiredDependencyResolutionScopes );
+        return new MavenExecutionPlan( mojoExecutions, requiredDependencyResolutionScopes,
+                                       requiredDependencyCollectionScopes );
     }
 
     private List<TaskSegment> calculateTaskSegments( MavenSession session, List<String> tasks )
@@ -887,21 +893,32 @@
         return request;
     }
 
-    private void collectDependencyResolutionScopes( Collection<String> requiredDependencyResolutionScopes,
+    private void collectDependencyRequirements( Collection<String> requiredDependencyResolutionScopes,
+                                                    Collection<String> requiredDependencyCollectionScopes,
                                                     MojoExecution mojoExecution )
     {
-        String requiredDependencyResolutionScope = mojoExecution.getMojoDescriptor().isDependencyResolutionRequired();
+        MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
+
+        String requiredDependencyResolutionScope = mojoDescriptor.getDependencyResolutionRequired();
 
         if ( StringUtils.isNotEmpty( requiredDependencyResolutionScope ) )
         {
             requiredDependencyResolutionScopes.add( requiredDependencyResolutionScope );
         }
 
+        String requiredDependencyCollectionScope = mojoDescriptor.getDependencyCollectionRequired();
+
+        if ( StringUtils.isNotEmpty( requiredDependencyCollectionScope ) )
+        {
+            requiredDependencyCollectionScopes.add( requiredDependencyCollectionScope );
+        }
+
         for ( List<MojoExecution> forkedExecutions : mojoExecution.getForkedExecutions().values() )
         {
             for ( MojoExecution forkedExecution : forkedExecutions )
             {
-                collectDependencyResolutionScopes( requiredDependencyResolutionScopes, forkedExecution );
+                collectDependencyRequirements( requiredDependencyResolutionScopes,
+                                                   requiredDependencyCollectionScopes, forkedExecution );
             }
         }
     }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/MavenExecutionPlan.java Sun Aug 30 22:28:16 2009
@@ -38,10 +38,15 @@
     /** For project dependency resolution, the scopes of resolution required if any. */
     private Set<String> requiredDependencyResolutionScopes;
 
-    public MavenExecutionPlan( List<MojoExecution> executions, Set<String> requiredDependencyResolutionScopes )
+    /** For project dependency collection, the scopes of collection required if any. */
+    private Set<String> requiredDependencyCollectionScopes;
+
+    public MavenExecutionPlan( List<MojoExecution> executions, Set<String> requiredDependencyResolutionScopes,
+                               Set<String> requiredDependencyCollectionScopes )
     {
         this.executions = executions;
         this.requiredDependencyResolutionScopes = requiredDependencyResolutionScopes;
+        this.requiredDependencyCollectionScopes = requiredDependencyCollectionScopes;
     }
 
     public List<MojoExecution> getExecutions()
@@ -52,5 +57,11 @@
     public Set<String> getRequiredResolutionScopes()
     {
         return requiredDependencyResolutionScopes;
-    }        
+    }
+
+    public Set<String> getRequiredCollectionScopes()
+    {
+        return requiredDependencyCollectionScopes;
+    }
+
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java Sun Aug 30 22:28:16 2009
@@ -397,7 +397,7 @@
         ArtifactResolutionRequest request = new ArtifactResolutionRequest( repositoryRequest );
         request.setArtifact( pluginArtifact );
         request.setArtifactDependencies( overrideArtifacts );
-        request.setFilter( filter );
+        request.setCollectionFilter( filter );
         request.setResolveRoot( true );
         request.setResolveTransitively( true );
 

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java Sun Aug 30 22:28:16 2009
@@ -1861,14 +1861,9 @@
     }
 
     private void addArtifactPath( Artifact artifact, List<String> classpath )
-        throws DependencyResolutionRequiredException
     {
         File file = artifact.getFile();
-        if ( file == null )
-        {
-            throw new DependencyResolutionRequiredException( artifact );
-        }
-        else
+        if ( file != null )
         {
             classpath.add( file.getPath() );
         }

Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java Sun Aug 30 22:28:16 2009
@@ -62,7 +62,7 @@
         throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
         MojoNotFoundException
     {
-        return new MavenExecutionPlan( Collections.<MojoExecution> emptyList(), null );
+        return new MavenExecutionPlan( Collections.<MojoExecution> emptyList(), null, null );
     }
 
     public void execute( MavenSession session )

Modified: maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java (original)
+++ maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java Sun Aug 30 22:28:16 2009
@@ -93,6 +93,9 @@
     /** Specify the required dependencies in a specified scope */
     private String dependencyResolutionRequired = null;
 
+    /** The scope of (transitive) dependencies that should be collected but not resolved. */
+    private String dependencyCollectionRequired;
+
     /**  By default, the Mojo needs a Maven project to be executed */
     private boolean projectRequired = true;
 
@@ -235,15 +238,38 @@
         this.dependencyResolutionRequired = requiresDependencyResolution;
     }
 
+    public String getDependencyResolutionRequired()
+    {
+        return dependencyResolutionRequired;
+    }
+
     /**
      * @return the required dependencies in a specified scope
      * @TODO the name is not intelligible
      */
+    @Deprecated
     public String isDependencyResolutionRequired()
     {
         return dependencyResolutionRequired;
     }
 
+    public void setDependencyCollectionRequired( String requiresDependencyCollection )
+    {
+        this.dependencyCollectionRequired = requiresDependencyCollection;
+    }
+
+    /**
+     * Gets the scope of (transitive) dependencies that should be collected. Dependency collection refers to the process
+     * of calculating the complete dependency tree in terms of artifact coordinates. In contrast to dependency
+     * resolution, this does not include the download of the files for the dependency artifacts.
+     * 
+     * @return The scope of (transitive) dependencies that should be collected or {@code null} if none.
+     */
+    public String getDependencyCollectionRequired()
+    {
+        return dependencyCollectionRequired;
+    }
+
     // ----------------------------------------------------------------------
     // Project requirement
     // ----------------------------------------------------------------------

Modified: maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java (original)
+++ maven/components/trunk/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java Sun Aug 30 22:28:16 2009
@@ -195,11 +195,18 @@
 
         mojo.setDescription( c.getChild( "description" ).getValue() );
 
-        String dependencyResolution = c.getChild( "requiresDependencyResolution" ).getValue();
+        PlexusConfiguration dependencyResolution = c.getChild( "requiresDependencyResolution", false );
 
         if ( dependencyResolution != null )
         {
-            mojo.setDependencyResolutionRequired( dependencyResolution );
+            mojo.setDependencyResolutionRequired( dependencyResolution.getValue() );
+        }
+
+        PlexusConfiguration dependencyCollection = c.getChild( "requiresDependencyCollection", false );
+
+        if ( dependencyCollection != null )
+        {
+            mojo.setDependencyCollectionRequired( dependencyCollection.getValue() );
         }
 
         String directInvocationOnly = c.getChild( "requiresDirectInvocation" ).getValue();

Modified: maven/components/trunk/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java (original)
+++ maven/components/trunk/maven-plugin-api/src/test/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilderTest.java Sun Aug 30 22:28:16 2009
@@ -66,7 +66,8 @@
 
         assertEquals( "jar", md.getGoal() );
         assertEquals( "mojo-description", md.getDescription() );
-        assertEquals( "runtime", md.isDependencyResolutionRequired() );
+        assertEquals( "runtime", md.getDependencyResolutionRequired() );
+        assertEquals( "test", md.getDependencyCollectionRequired() );
         assertEquals( false, md.isAggregator() );
         assertEquals( false, md.isDirectInvocationOnly() );
         assertEquals( true, md.isInheritedByDefault() );

Modified: maven/components/trunk/maven-plugin-api/src/test/resources/plugin.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-plugin-api/src/test/resources/plugin.xml?rev=809431&r1=809430&r2=809431&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-api/src/test/resources/plugin.xml (original)
+++ maven/components/trunk/maven-plugin-api/src/test/resources/plugin.xml Sun Aug 30 22:28:16 2009
@@ -12,6 +12,7 @@
       <goal>jar</goal>
       <description>mojo-description</description>
       <requiresDependencyResolution>runtime</requiresDependencyResolution>
+      <requiresDependencyCollection>test</requiresDependencyCollection>
       <requiresDirectInvocation>false</requiresDirectInvocation>
       <requiresProject>true</requiresProject>
       <requiresReports>false</requiresReports>