You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2011/05/09 00:34:59 UTC
svn commit: r1100828 - in
/maven/plugins/trunk/maven-project-info-reports-plugin/src: it/full-pom/
main/java/org/apache/maven/report/projectinfo/
main/java/org/apache/maven/report/projectinfo/dependencies/renderer/
test/java/org/apache/maven/report/pro...
Author: hboutemy
Date: Sun May 8 22:34:59 2011
New Revision: 1100828
URL: http://svn.apache.org/viewvc?rev=1100828&view=rev
Log:
[MPIR-216] resolve artifact version for dependency-management report when version range used
Modified:
maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
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/DependencyManagementReport.java
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/pom.xml Sun May 8 22:34:59 2011
@@ -131,9 +131,9 @@
<dependencyManagement>
<dependencies>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- <version>1.5.5</version>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-sink-api</artifactId>
+ <version>[1.0,)</version>
</dependency>
</dependencies>
</dependencyManagement>
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/it/full-pom/verify.bsh Sun May 8 22:34:59 2011
@@ -95,6 +95,14 @@ try
System.err.println( "dependencies.html doesn't contain doxia-core-1.2.jar" );
return false;
}
+
+ File dependencyMgmt = new File( siteDir, "dependency-management.html");
+ content = FileUtils.fileRead( dependencyMgmt, "UTF-8" );
+ if ( !content.contains( "http://maven.apache.org/doxia/doxia/doxia-sink-api/" ) )
+ {
+ System.err.println( "dependency-management doesn't contain doxia-sink-api url http://maven.apache.org/doxia/doxia/doxia-sink-api/" );
+ return false;
+ }
}
catch( Throwable t )
{
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java Sun May 8 22:34:59 2011
@@ -56,6 +56,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.text.MessageFormat;
import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
@@ -144,6 +145,14 @@ public abstract class AbstractProjectInf
protected ArtifactRepository localRepository;
/**
+ * Remote repositories used for the project.
+ *
+ * @since 2.1
+ * @parameter expression="${project.remoteArtifactRepositories}"
+ */
+ protected List<ArtifactRepository> remoteRepositories;
+
+ /**
* The current user system settings for use in Maven.
*
* @parameter expression="${settings}"
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?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- 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 Sun May 8 22:34:59 2011
@@ -135,16 +135,6 @@ public class DependenciesReport
// ----------------------------------------------------------------------
/**
- * Remote repositories used for the project.
- *
- * @since 2.1
- * @parameter expression="${project.remoteArtifactRepositories}"
- * @required
- * @readonly
- */
- private List<ArtifactRepository> remoteRepositories;
-
- /**
* Display file details for each dependency, such as: file size, number of
* classes, number of packages etc.
*
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependencyManagementReport.java Sun May 8 22:34:59 2011
@@ -24,6 +24,7 @@ import java.util.Locale;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
import org.apache.maven.project.MavenProjectBuilder;
@@ -55,6 +56,14 @@ public class DependencyManagementReport
private MavenProjectBuilder mavenProjectBuilder;
/**
+ * Artifact metadata source component.
+ *
+ * @component
+ * @since 2.4
+ */
+ protected ArtifactMetadataSource artifactMetadataSource;
+
+ /**
* Maven Artifact Factory component.
*
* @component
@@ -82,14 +91,6 @@ public class DependencyManagementReport
// ----------------------------------------------------------------------
/**
- * Remote repositories used for the project.
- *
- * @since 2.1
- * @parameter expression="${project.remoteArtifactRepositories}"
- */
- private List<ArtifactRepository> remoteRepositories;
-
- /**
* Lazy instantiation for management dependencies.
*/
private ManagementDependencies managementDependencies;
@@ -110,7 +111,7 @@ public class DependencyManagementReport
DependencyManagementRenderer r =
new DependencyManagementRenderer( getSink(), locale, getI18N( locale ), getLog(), getManagementDependencies(),
- artifactFactory, mavenProjectBuilder, remoteRepositories,
+ artifactMetadataSource, artifactFactory, mavenProjectBuilder, remoteRepositories,
localRepository, repoUtils );
r.render();
}
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.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/DependencyManagementRenderer.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependencyManagementRenderer.java Sun May 8 22:34:59 2011
@@ -27,7 +27,10 @@ import java.util.Map;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.License;
@@ -54,6 +57,8 @@ public class DependencyManagementRendere
private final Log log;
+ private final ArtifactMetadataSource artifactMetadataSource;
+
private final ArtifactFactory artifactFactory;
private final MavenProjectBuilder mavenProjectBuilder;
@@ -79,8 +84,9 @@ public class DependencyManagementRendere
* @param repoUtils
*/
public DependencyManagementRenderer( Sink sink, Locale locale, I18N i18n, Log log,
- ManagementDependencies dependencies, ArtifactFactory artifactFactory,
- MavenProjectBuilder mavenProjectBuilder,
+ ManagementDependencies dependencies,
+ ArtifactMetadataSource artifactMetadataSource,
+ ArtifactFactory artifactFactory, MavenProjectBuilder mavenProjectBuilder,
List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository, RepositoryUtils repoUtils )
{
@@ -88,6 +94,7 @@ public class DependencyManagementRendere
this.log = log;
this.dependencies = dependencies;
+ this.artifactMetadataSource = artifactMetadataSource;
this.artifactFactory = artifactFactory;
this.mavenProjectBuilder = mavenProjectBuilder;
this.remoteRepositories = remoteRepositories;
@@ -202,41 +209,63 @@ public class DependencyManagementRendere
}
}
+ @SuppressWarnings( "unchecked" )
private String[] getDependencyRow( Dependency dependency, boolean hasClassifier )
{
- Artifact artifact = artifactFactory.createParentArtifact( dependency.getGroupId(), dependency.getArtifactId(),
- dependency.getVersion() );
- String url =
- ProjectInfoReportUtils.getArtifactUrl( artifactFactory, artifact, mavenProjectBuilder, remoteRepositories,
- localRepository );
- String artifactIdCell = ProjectInfoReportUtils.getArtifactIdCell( artifact.getArtifactId(), url );
+ Artifact artifact =
+ artifactFactory.createProjectArtifact( dependency.getGroupId(), dependency.getArtifactId(),
+ dependency.getVersion() );
- MavenProject artifactProject;
- StringBuffer sb = new StringBuffer();
+ StringBuffer licensesBuffer = new StringBuffer();
+ String url = null;
try
{
- artifactProject = repoUtils.getMavenProjectFromRepository( artifact );
- @SuppressWarnings( "unchecked" )
+ List<ArtifactVersion> versions =
+ artifactMetadataSource.retrieveAvailableVersions( artifact, localRepository, remoteRepositories );
+
+ if ( versions.size() > 0 )
+ {
+ Collections.sort( versions );
+
+ artifact.setVersion( versions.get( versions.size() - 1 ).toString() );
+ }
+
+ url =
+ ProjectInfoReportUtils.getArtifactUrl( artifactFactory, artifact, mavenProjectBuilder,
+ remoteRepositories, localRepository );
+
+ MavenProject artifactProject = repoUtils.getMavenProjectFromRepository( artifact );
+
List<License> licenses = artifactProject.getLicenses();
for ( License license : licenses )
{
- String artifactIdCell2 = ProjectInfoReportUtils.getArtifactIdCell( license.getName(), license.getUrl() );
- sb.append( artifactIdCell2 );
+ String licenseCell = ProjectInfoReportUtils.getArtifactIdCell( license.getName(), license.getUrl() );
+ if ( licensesBuffer.length() > 0 )
+ {
+ licensesBuffer.append( ", " );
+ }
+ licensesBuffer.append( licenseCell );
}
}
+ catch ( ArtifactMetadataRetrievalException e )
+ {
+ log.warn( "Unable to retrieve versions for " + artifact.getId() + " from repository.", e );
+ }
catch ( ProjectBuildingException e )
{
- log.warn( "Unable to create Maven project from repository.", e );
+ log.warn( "Unable to create Maven project for " + artifact.getId() + " from repository.", e );
}
+ String artifactIdCell = ProjectInfoReportUtils.getArtifactIdCell( artifact.getArtifactId(), url );
+
if ( hasClassifier )
{
return new String[] { dependency.getGroupId(), artifactIdCell, dependency.getVersion(),
- dependency.getClassifier(), dependency.getType(), sb.toString() };
+ dependency.getClassifier(), dependency.getType(), licensesBuffer.toString() };
}
return new String[] { dependency.getGroupId(), artifactIdCell, dependency.getVersion(),
- dependency.getType(), sb.toString() };
+ dependency.getType(), licensesBuffer.toString() };
}
private Comparator<Dependency> getDependencyComparator()
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java Sun May 8 22:34:59 2011
@@ -19,8 +19,6 @@ package org.apache.maven.report.projecti
* under the License.
*/
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.profiles.DefaultProfileManager;
import org.apache.maven.profiles.ProfileManager;
@@ -159,18 +157,17 @@ public abstract class AbstractProjectInf
throws Exception
{
File pluginXmlFile = new File( getBasedir(), "src/test/resources/plugin-configs/" + pluginXml );
- Mojo mojo = lookupMojo( goal, pluginXmlFile );
+ AbstractProjectInfoReport mojo = (AbstractProjectInfoReport) lookupMojo( goal, pluginXmlFile );
assertNotNull( "Mojo found.", mojo );
+ setVariableValueToObject( mojo, "remoteRepositories", mojo.project.getRemoteArtifactRepositories() );
+
mojo.execute();
MavenProjectBuilder builder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
ProfileManager profileManager = new DefaultProfileManager( getContainer(), null, null );
- ArtifactRepository localRepository = (ArtifactRepository) getVariableValueFromObject( mojo,
- "localRepository" );
-
- testMavenProject = builder.buildWithDependencies( pluginXmlFile, localRepository, profileManager );
+ testMavenProject = builder.buildWithDependencies( pluginXmlFile, mojo.localRepository, profileManager );
MavenReport reportMojo = (MavenReport) mojo;
File outputDir = reportMojo.getReportOutputDirectory();
Modified: maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml?rev=1100828&r1=1100827&r2=1100828&view=diff
==============================================================================
--- maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml (original)
+++ maven/plugins/trunk/maven-project-info-reports-plugin/src/test/resources/plugin-configs/dependencies-plugin-config.xml Sun May 8 22:34:59 2011
@@ -40,8 +40,8 @@ under the License.
<configuration>
<outputDirectory>target/test-harness/dependencies</outputDirectory>
<localRepository>${localRepository}</localRepository>
- <project implementation="org.apache.maven.report.projectinfo.stubs.DependenciesStub"/>
- <settings implementation="org.apache.maven.report.projectinfo.stubs.SettingsStub"/>
+ <project implementation="org.apache.maven.report.projectinfo.stubs.DependenciesStub"/>
+ <settings implementation="org.apache.maven.report.projectinfo.stubs.SettingsStub"/>
</configuration>
</plugin>
</plugins>