You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jo...@apache.org on 2006/11/20 22:36:06 UTC
svn commit: r477353 - in
/maven/plugins/trunk/maven-project-info-reports-plugin: ./
src/main/java/org/apache/maven/report/projectinfo/
src/main/java/org/apache/maven/report/projectinfo/dependencies/
src/main/java/org/apache/maven/report/projectinfo/dep...
Author: joakime
Date: Mon Nov 20 13:36:05 2006
New Revision: 477353
URL: http://svn.apache.org/viewvc?view=rev&rev=477353
Log:
* refactored out Dependency Tree components in favor of MNG-2654 maven-dependency-tree component.
* break archiva <-> mpir dependency.
* updated to use new JarAnalyzerFactory mechanism present in maven-shared-jar.
Removed:
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/ReportResolutionListener.java
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/dependencies/
Modified:
maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/Dependencies.java
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml?view=diff&rev=477353&r1=477352&r2=477353
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/pom.xml Mon Nov 20 13:36:05 2006
@@ -122,6 +122,11 @@
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-dependency-tree</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
<version>1.0-beta-2-SNAPSHOT</version>
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?view=diff&rev=477353&r1=477352&r2=477353
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java Mon Nov 20 13:36:05 2006
@@ -19,25 +19,18 @@
import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.resolver.ArtifactCollector;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.report.projectinfo.dependencies.Dependencies;
import org.apache.maven.report.projectinfo.dependencies.DependenciesReportConfiguration;
-import org.apache.maven.report.projectinfo.dependencies.ReportResolutionListener;
import org.apache.maven.report.projectinfo.dependencies.RepositoryUtils;
import org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer;
import org.apache.maven.settings.Settings;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.apache.maven.shared.dependency.tree.DependencyTree;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+import org.apache.maven.shared.jar.JarAnalyzerFactory;
-import java.util.Collections;
import java.util.Locale;
-import java.util.Map;
/**
* Generates the Project Dependencies report.
@@ -50,7 +43,6 @@
*/
public class DependenciesReport
extends AbstractProjectInfoReport
- implements Contextualizable
{
/**
* Maven Project Builder.
@@ -73,8 +65,18 @@
* @component
*/
private WagonManager wagonManager;
+
+ /**
+ * @component
+ */
+ private DependencyTreeBuilder dependencyTreeBuilder;
/**
+ * @component
+ */
+ private JarAnalyzerFactory jarAnalyzerFactory;
+
+ /**
* The current user system settings for use in Maven.
*
* @parameter expression="${settings}"
@@ -94,8 +96,6 @@
*/
private boolean dependencyLocationsEnabled;
- private PlexusContainer container;
-
/**
* @see org.apache.maven.reporting.MavenReport#getName(java.util.Locale)
*/
@@ -121,56 +121,33 @@
project.getRemoteArtifactRepositories(),
project.getPluginArtifactRepositories(), localRepository );
- ReportResolutionListener listener = resolveProject();
+ DependencyTree dependencyTree = resolveProject();
- Dependencies dependencies = new Dependencies( project, listener, container );
+ Dependencies dependencies = new Dependencies( project, dependencyTree, jarAnalyzerFactory );
DependenciesReportConfiguration config =
new DependenciesReportConfiguration( dependencyDetailsEnabled, dependencyLocationsEnabled );
DependenciesRenderer r =
- new DependenciesRenderer( getSink(), locale, i18n, dependencies, listener, config, repoUtils );
+ new DependenciesRenderer( getSink(), locale, i18n, dependencies, dependencyTree, config, repoUtils );
repoUtils.setLog( getLog() );
r.setLog( getLog() );
r.render();
}
- private ReportResolutionListener resolveProject()
+ private DependencyTree resolveProject()
{
- Map managedVersions = null;
try
{
- managedVersions = Dependencies.getManagedVersionMap( project, factory );
+ return dependencyTreeBuilder.buildDependencyTree( project, localRepository, factory,
+ artifactMetadataSource, collector );
}
- catch ( ProjectBuildingException e )
+ catch ( DependencyTreeBuilderException e )
{
- getLog().error( "An error occurred while resolving project dependencies.", e );
- }
-
- ReportResolutionListener listener = new ReportResolutionListener();
-
- try
- {
- // TODO site:run Why do we need to resolve this...
- if ( project.getDependencyArtifacts() == null )
- {
- project.setDependencyArtifacts( project.createArtifacts( factory, null, null ) );
- }
- collector.collect( project.getDependencyArtifacts(), project.getArtifact(), managedVersions,
- localRepository, project.getRemoteArtifactRepositories(), artifactMetadataSource, null,
- Collections.singletonList( listener ) );
- }
- catch ( ArtifactResolutionException e )
- {
- getLog().error( "An error occurred while resolving project dependencies.", e );
- }
- catch ( InvalidDependencyVersionException e )
- {
- getLog().error( "An error occurred while resolving project dependencies.", e );
- }
-
- return listener;
+ getLog().error( "Unable to build dependency tree.", e );
+ return null;
+ }
}
/**
@@ -179,11 +156,5 @@
public String getOutputName()
{
return "dependencies";
- }
-
- public void contextualize( Context context )
- throws ContextException
- {
- container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
}
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/Dependencies.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/Dependencies.java?view=diff&rev=477353&r1=477352&r2=477353
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/Dependencies.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/Dependencies.java Mon Nov 20 13:36:05 2006
@@ -18,23 +18,16 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.DependencyManagement;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.report.projectinfo.dependencies.ReportResolutionListener.Node;
-import org.apache.maven.shared.jar.Jar;
-import org.apache.maven.shared.jar.JarException;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.DependencyTree;
+import org.apache.maven.shared.jar.JarAnalyzer;
+import org.apache.maven.shared.jar.JarAnalyzerException;
+import org.apache.maven.shared.jar.JarAnalyzerFactory;
import org.apache.maven.shared.jar.classes.JarClasses;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import java.io.File;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -43,19 +36,18 @@
public class Dependencies
{
private List projectDependencies;
+ private DependencyTree dependencyTree;
+ private JarAnalyzerFactory jarAnalyzerFactory;
- private ReportResolutionListener resolvedDependencies;
-
- private Jar jar;
-
- public Dependencies( MavenProject project, ReportResolutionListener listener, PlexusContainer container )
+ public Dependencies( MavenProject project, DependencyTree dependencyTree, JarAnalyzerFactory jarAnalyzerFactory )
{
- this.projectDependencies = listener.getRootNode().getChildren();
- this.resolvedDependencies = listener;
+ this.dependencyTree = dependencyTree;
+ this.projectDependencies = dependencyTree.getRootNode().getChildren();
+ this.jarAnalyzerFactory = jarAnalyzerFactory;
/*
- * Workaround to ensure proper File objects in the Artifacts from the ReportResolutionListener
- */
+ * Workaround to ensure proper File objects in the Artifacts from the ReportResolutionListener
+ */
Map projectMap = new HashMap();
Iterator it = project.getArtifacts().iterator();
while ( it.hasNext() )
@@ -64,60 +56,10 @@
projectMap.put( ArtifactUtils.versionlessKey( artifact ), artifact );
}
- mapArtifactFiles( listener.getRootNode(), projectMap );
-
- // quick fix
- try
- {
- if ( container != null )
- {
- this.jar = (Jar) container.lookup( Jar.ROLE );
- }
- }
- catch ( ComponentLookupException ex )
- {
- //TODO: handle exception
- }
+ mapArtifactFiles( dependencyTree.getRootNode(), projectMap );
}
- public static Map getManagedVersionMap( MavenProject project, ArtifactFactory factory )
- throws ProjectBuildingException
- {
- DependencyManagement dependencyManagement = project.getDependencyManagement();
- Map managedVersionMap;
-
- if ( dependencyManagement != null && dependencyManagement.getDependencies() != null )
- {
- managedVersionMap = new HashMap();
- for ( Iterator i = dependencyManagement.getDependencies().iterator(); i.hasNext(); )
- {
- Dependency d = (Dependency) i.next();
-
- try
- {
- VersionRange versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
- Artifact artifact = factory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
- versionRange, d.getType(), d.getClassifier(),
- d.getScope() );
- managedVersionMap.put( d.getManagementKey(), artifact );
- }
- catch ( InvalidVersionSpecificationException e )
- {
- throw new ProjectBuildingException( project.getId(), "Unable to parse version '" + d.getVersion() +
- "' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), e );
- }
- }
- }
- else
- {
- managedVersionMap = Collections.EMPTY_MAP;
- }
-
- return managedVersionMap;
- }
-
-
- private void mapArtifactFiles( Node node, Map projectMap )
+ private void mapArtifactFiles( DependencyNode node, Map projectMap )
{
List childs = node.getChildren();
if ( ( childs == null ) || childs.isEmpty() )
@@ -128,7 +70,7 @@
Iterator it = childs.iterator();
while ( it.hasNext() )
{
- Node anode = (ReportResolutionListener.Node) it.next();
+ DependencyNode anode = (DependencyNode) it.next();
String key = ArtifactUtils.versionlessKey( anode.getArtifact() );
Artifact projartifact = (Artifact) projectMap.get( key );
if ( projartifact != null )
@@ -152,22 +94,14 @@
public List getTransitiveDependencies()
{
- List deps = new ArrayList( resolvedDependencies.getArtifacts() );
+ List deps = new ArrayList( dependencyTree.getArtifacts() );
deps.removeAll( projectDependencies );
return deps;
}
public List getAllDependencies()
{
- List deps = new ArrayList();
-
- for ( Iterator it = resolvedDependencies.getArtifacts().iterator(); it.hasNext(); )
- {
- ReportResolutionListener.Node node = (ReportResolutionListener.Node) it.next();
- Artifact artifact = node.getArtifact();
- deps.add( artifact );
- }
- return deps;
+ return dependencyTree.getArtifacts();
}
public Map getDependenciesByScope()
@@ -189,19 +123,14 @@
}
public JarDependencyDetails getJarDependencyDetails( Artifact artifact )
- throws JarException
+ throws JarAnalyzerException
{
File artifactFile = artifact.getFile();
- JarClasses jarClasses;
-
- jar.setFile( artifactFile );
- jarClasses = jar.getClasses();
+
+ JarAnalyzer jar = jarAnalyzerFactory.getJarAnalyzer( artifactFile );
+
+ JarClasses jarClasses = jar.getClasses();
return new JarDependencyDetails( jarClasses, jar.isSealed(), jar.getEntries() );
- }
-
- public ReportResolutionListener.Node getResolvedRoot()
- {
- return resolvedDependencies.getRootNode();
}
}
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java?view=diff&rev=477353&r1=477352&r2=477353
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java Mon Nov 20 13:36:05 2006
@@ -13,10 +13,11 @@
import org.apache.maven.report.projectinfo.dependencies.Dependencies;
import org.apache.maven.report.projectinfo.dependencies.DependenciesReportConfiguration;
import org.apache.maven.report.projectinfo.dependencies.JarDependencyDetails;
-import org.apache.maven.report.projectinfo.dependencies.ReportResolutionListener;
import org.apache.maven.report.projectinfo.dependencies.RepositoryUtils;
import org.apache.maven.reporting.AbstractMavenReportRenderer;
-import org.apache.maven.shared.jar.JarException;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.DependencyTree;
+import org.apache.maven.shared.jar.JarAnalyzerException;
import org.codehaus.plexus.i18n.I18N;
import org.codehaus.plexus.util.StringUtils;
@@ -50,7 +51,7 @@
JAR_SUBTYPE.add( "ejb" );
}
- private final ReportResolutionListener listener;
+ private final DependencyTree dependencyTree;
private Dependencies dependencies;
@@ -80,15 +81,15 @@
}
};
- public DependenciesRenderer( Sink sink, Locale locale, I18N _i18n, Dependencies _dependencies,
- ReportResolutionListener listener, DependenciesReportConfiguration config,
+ public DependenciesRenderer( Sink sink, Locale _locale, I18N _i18n, Dependencies _dependencies,
+ DependencyTree _depTree, DependenciesReportConfiguration _config,
RepositoryUtils _repoUtils )
{
super( sink );
- this.locale = locale;
+ this.locale = _locale;
- this.listener = listener;
+ this.dependencyTree = _depTree;
this.repoUtils = _repoUtils;
@@ -96,7 +97,7 @@
this.i18n = _i18n;
- this.configuration = config;
+ this.configuration = _config;
}
public void setLog( Log _log )
@@ -231,7 +232,7 @@
startSection( getReportString( "report.dependencies.graph.tree.title" ) );
sink.paragraph();
sink.list();
- printDependencyListing( listener.getRootNode() );
+ printDependencyListing( dependencyTree.getRootNode() );
sink.list_();
sink.paragraph_();
endSection();
@@ -342,7 +343,7 @@
decFormat.format( jarDetails.getPackageSize() ), jarDetails.getJdkRevision(), debugstr,
sealedstr} );
}
- catch ( JarException e )
+ catch ( JarAnalyzerException e )
{
createExceptionInfoTableRow( artifact, artifactFile, e );
}
@@ -532,7 +533,7 @@
private void renderSectionDependencyListing()
{
startSection( getReportString( "report.dependencies.graph.tables.title" ) );
- printDescriptionsAndURLs( listener.getRootNode() );
+ printDescriptionsAndURLs( dependencyTree.getRootNode() );
endSection();
}
@@ -599,7 +600,7 @@
artifact.getClassifier(), artifact.getType(), artifact.isOptional() ? "(optional)" : " "};
}
- private void printDependencyListing( ReportResolutionListener.Node node )
+ private void printDependencyListing( DependencyNode node )
{
Artifact artifact = node.getArtifact();
String id = artifact.getDependencyConflictId();
@@ -616,7 +617,7 @@
sink.list();
for ( Iterator deps = node.getChildren().iterator(); deps.hasNext(); )
{
- ReportResolutionListener.Node dep = (ReportResolutionListener.Node) deps.next();
+ DependencyNode dep = (DependencyNode) deps.next();
printDependencyListing( dep );
}
sink.list_();
@@ -626,7 +627,7 @@
sink.listItem_();
}
- private void printDescriptionsAndURLs( ReportResolutionListener.Node node )
+ private void printDescriptionsAndURLs( DependencyNode node )
{
Artifact artifact = node.getArtifact();
String id = artifact.getDependencyConflictId();
@@ -713,7 +714,7 @@
for ( Iterator deps = node.getChildren().iterator(); deps.hasNext(); )
{
- ReportResolutionListener.Node dep = (ReportResolutionListener.Node) deps.next();
+ DependencyNode dep = (DependencyNode) deps.next();
printDescriptionsAndURLs( dep );
}
}