You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2009/08/27 19:01:46 UTC
svn commit: r808522 - in /maven/plugins/trunk/maven-remote-resources-plugin:
pom.xml
src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
Author: jdcasey
Date: Thu Aug 27 17:01:45 2009
New Revision: 808522
URL: http://svn.apache.org/viewvc?rev=808522&view=rev
Log:
[MRRESOURCES-41] Use the new maven-artifact-resolver API to resolve all dependencies for the reactor projects in cases where runOnlyAtExecutionRoot is true. Also, adding this new parameter to allow generation of DEPENDENCIES and other resource files at the topmost level of a build only, for cases where a whole multimodule build will be released at one time.
Modified:
maven/plugins/trunk/maven-remote-resources-plugin/pom.xml
maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
Modified: maven/plugins/trunk/maven-remote-resources-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/pom.xml?rev=808522&r1=808521&r2=808522&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/pom.xml Thu Aug 27 17:01:45 2009
@@ -57,6 +57,11 @@
<dependencies>
<dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-artifact-resolver</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.5</version>
@@ -139,6 +144,12 @@
<version>1.0-beta-1</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-provider-api</artifactId>
+ <version>1.0-beta-6</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
Modified: maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java?rev=808522&r1=808521&r2=808522&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java Thu Aug 27 17:01:45 2009
@@ -19,39 +19,14 @@
* under the License.
*/
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
+import org.apache.maven.ProjectDependenciesResolver;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Model;
@@ -67,6 +42,7 @@
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ProjectUtils;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
import org.apache.maven.shared.artifact.filter.collection.ArtifactIdFilter;
@@ -88,6 +64,35 @@
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.codehaus.plexus.velocity.VelocityComponent;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
/**
* <p>
* Pull down resourceBundles containing remote resources and process the
@@ -111,6 +116,16 @@
public class ProcessRemoteResourcesMojo
extends AbstractMojo
{
+
+ /**
+ * If true, only generate resources in the directory of the root project in a multimodule build.
+ * Dependencies from all modules will be aggregated before resource-generation takes place.
+ *
+ * @parameter default-value="false"
+ * @since 1.1
+ */
+ private boolean runOnlyAtExecutionRoot;
+
/**
* The local repository taken from Maven's runtime. Typically $HOME/.m2/repository.
*
@@ -366,6 +381,11 @@
* @parameter expression="${excludeTransitive}" default-value="false"
*/
protected boolean excludeTransitive;
+
+ /**
+ * @component role-hint="default"
+ */
+ protected ProjectDependenciesResolver dependencyResolver;
public void execute()
throws MojoExecutionException
@@ -462,14 +482,25 @@
// add filters in well known order, least specific to most specific
FilterArtifacts filter = new FilterArtifacts();
+
+ Set depArtifacts;
+ Set artifacts;
+ if ( runOnlyAtExecutionRoot )
+ {
+ depArtifacts = aggregateProjectDependencyArtifacts();
+ artifacts = resolveProjectArtifacts();
+ }
+ else
+ {
+ depArtifacts = project.getDependencyArtifacts();
+ artifacts = project.getArtifacts();
+ }
- filter.addFilter( new TransitivityFilter( project.getDependencyArtifacts(), this.excludeTransitive ) );
+ filter.addFilter( new TransitivityFilter( depArtifacts, this.excludeTransitive ) );
filter.addFilter( new ScopeFilter( this.includeScope, this.excludeScope ) );
filter.addFilter( new GroupIdFilter( this.includeGroupIds, this.excludeGroupIds ) );
filter.addFilter( new ArtifactIdFilter( this.includeArtifactIds, this.excludeArtifactIds ) );
- // start with all artifacts.
- Set artifacts = project.getArtifacts();
// perform filtering
try
{
@@ -552,6 +583,59 @@
return projects;
}
+ private Set resolveProjectArtifacts()
+ throws MojoExecutionException
+ {
+ List projects = mavenSession.getSortedProjects();
+
+ try
+ {
+ return dependencyResolver.resolve( projects, Collections.singleton( Artifact.SCOPE_TEST ), mavenSession );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new MojoExecutionException( "Failed to resolve dependencies for one or more projects in the reactor. Reason: "
+ + e.getMessage(), e );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new MojoExecutionException( "Failed to resolve dependencies for one or more projects in the reactor. Reason: "
+ + e.getMessage(), e );
+ }
+ }
+
+ private Set aggregateProjectDependencyArtifacts()
+ throws MojoExecutionException
+ {
+ Set artifacts = new LinkedHashSet();
+
+ List projects = mavenSession.getSortedProjects();
+ for ( Iterator it = projects.iterator(); it.hasNext(); )
+ {
+ MavenProject p = (MavenProject) it.next();
+ if ( p.getDependencyArtifacts() == null )
+ {
+ try
+ {
+ Set depArtifacts = p.createArtifacts( artifactFactory, null, null );
+ p.setDependencyArtifacts( depArtifacts );
+
+ if ( depArtifacts != null && !depArtifacts.isEmpty() )
+ {
+ artifacts.addAll( depArtifacts );
+ }
+ }
+ catch ( InvalidDependencyVersionException e )
+ {
+ throw new MojoExecutionException( "Failed to create dependency artifacts for: " + p.getId() + ". Reason: "
+ + e.getMessage(), e );
+ }
+ }
+ }
+
+ return artifacts;
+ }
+
protected Map getProjectsSortedByOrganization( List projects )
throws MojoExecutionException
{