Author: carlos Date: Mon Feb 12 22:33:24 2007 New Revision: 506884 URL: http://svn.apache.org/viewvc?view=rev&rev=506884 Log: Refactor to use artifact resolver
Modified: maven/sandbox/plugins/maven-bundle-plugin/src/main/java/org/apache/felix/tools/maven2/bundleplugin/RecursiveBundlePlugin.java Modified: maven/sandbox/plugins/maven-bundle-plugin/src/main/java/org/apache/felix/tools/maven2/bundleplugin/RecursiveBundlePlugin.java URL: http://svn.apache.org/viewvc/maven/sandbox/plugins/maven-bundle-plugin/src/main/java/org/apache/felix/tools/maven2/bundleplugin/RecursiveBundlePlugin.java?view=diff&rev=506884&r1=506883&r2=506884 ============================================================================== --- maven/sandbox/plugins/maven-bundle-plugin/src/main/java/org/apache/felix/tools/maven2/bundleplugin/RecursiveBundlePlugin.java (original) +++ maven/sandbox/plugins/maven-bundle-plugin/src/main/java/org/apache/felix/tools/maven2/bundleplugin/RecursiveBundlePlugin.java Mon Feb 12 22:33:24 2007 @@ -31,6 +31,9 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactCollector; +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.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProjectBuilder; @@ -97,6 +100,13 @@ private ArtifactCollector collector; /** + * Artifact resolver, needed to download jars. + * + * @component + */ + private ArtifactResolver artifactResolver; + + /** * @component */ private DependencyTreeBuilder dependencyTreeBuilder; @@ -106,11 +116,21 @@ */ private MavenProjectBuilder mavenProjectBuilder; - private Map mapOfArtifacts; - public void execute() throws MojoExecutionException { + bundle( project ); + } + + /** + * Bundle a project and all its dependencies + * + * @param project + * @throws MojoExecutionException + */ + private void bundle( MavenProject project ) + throws MojoExecutionException + { DependencyTree dependencyTree; try @@ -123,22 +143,35 @@ throw new MojoExecutionException( "Unable to build dependency tree", e ); } - mapOfArtifacts = createMapOfArtifacts( project ); + getLog().info( "Will bundle the following dependency tree\n" + dependencyTree ); for ( Iterator it = dependencyTree.inverseIterator(); it.hasNext(); ) { DependencyNode node = (DependencyNode) it.next(); - Artifact artifact = node.getArtifact(); + if (!it.hasNext()) + { + /* this is the root, current project */ + break; + } + Artifact artifact = resolveArtifact( node.getArtifact() ); if ( ( artifact.getScope() == Artifact.SCOPE_COMPILE ) || ( artifact.getScope() == Artifact.SCOPE_RUNTIME ) ) { - bundle( node.getArtifact() ); + bundle( artifact ); } } } + /** + * Bundle one artifact only + * + * @param artifact + * @throws MojoExecutionException + */ private void bundle( Artifact artifact ) throws MojoExecutionException { + getLog().info( "Bundling " + artifact ); + MavenProject project; try { @@ -170,18 +203,6 @@ } } - private Map createMapOfArtifacts( MavenProject project ) - { - Set artifacts = project.getArtifacts(); - Map map = new HashMap(); - for ( Iterator it = artifacts.iterator(); it.hasNext(); ) - { - Artifact artifact = (Artifact) it.next(); - map.put( getArtifactKey( artifact ), artifact ); - } - return map; - } - private String getArtifactKey( Artifact artifact ) { return artifact.getGroupId() + ":" + artifact.getArtifactId(); @@ -211,17 +232,33 @@ { return bundle; } - File file = super.getFile( artifact ); - if ( file == null ) - { - Artifact a = (Artifact) mapOfArtifacts.get( getArtifactKey( artifact ) ); - file = a.getFile(); - } - return file; + return super.getFile( artifact ); } protected File getOutputFile( Artifact artifact ) { return new File( getBuildDirectory(), getBundleName( artifact ) ); + } + + private Artifact resolveArtifact( Artifact artifact ) + throws MojoExecutionException + { + Artifact resolvedArtifact = factory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact + .getVersion(), artifact.getScope(), artifact.getType() ); + + try + { + artifactResolver.resolve( resolvedArtifact, remoteRepositories, localRepository ); + } + catch ( ArtifactNotFoundException e ) + { + throw new MojoExecutionException( "Artifact was not found in the repo" + resolvedArtifact, e ); + } + catch ( ArtifactResolutionException e ) + { + throw new MojoExecutionException( "Error resolving artifact " + resolvedArtifact, e ); + } + + return resolvedArtifact; } }