Author: vsiveton
Date: Thu May 29 15:42:28 2008
New Revision: 661516
URL: http://svn.apache.org/viewvc?rev=661516&view=rev
Log:
MJAVADOC-178: Transitive Dependencies to Taglet Artifacts are not resolved nor
added to the classpath
o added transitive dependencies for docletPath and tagletPath
Modified:
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
Modified:
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java?rev=661516&r1=661515&r2=661516&view=diff
==============================================================================
---
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
(original)
+++
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
Thu May 29 15:42:28 2008
@@ -64,6 +64,8 @@
import org.apache.maven.plugin.javadoc.options.Taglet;
import org.apache.maven.plugin.javadoc.options.TagletArtifact;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.reporting.MavenReportException;
import org.apache.maven.settings.Proxy;
@@ -290,10 +292,19 @@
/**
* Specifies whether the javadoc generation should be skipped
*
+ * @since 2.5
* @parameter expression="${maven.javadoc.skip}" default-value="false"
*/
protected boolean skip;
+ /**
+ * Project builder
+ *
+ * @since 2.5
+ * @component
+ */
+ private MavenProjectBuilder mavenProjectBuilder;
+
// ----------------------------------------------------------------------
// Javadoc Options
// ----------------------------------------------------------------------
@@ -1990,7 +2001,7 @@
* @param artifactList the list of artifacts that will be put in the
map
* @throws MavenReportException
*/
- private void populateCompileArtifactMap( Map compileArtifactMap, List
artifactList )
+ private void populateCompileArtifactMap( Map compileArtifactMap,
Collection artifactList )
throws MavenReportException
{
if ( artifactList != null )
@@ -2152,7 +2163,7 @@
StringBuffer path = new StringBuffer();
if ( !isDocletArtifactEmpty( docletArtifact ) )
{
- path.append( getArtifactAbsolutePath( docletArtifact ) );
+ path.append( StringUtils.join( getArtifactsAbsolutePath(
docletArtifact ).iterator(), File.pathSeparator ) );
}
else if ( docletArtifacts != null )
{
@@ -2160,7 +2171,7 @@
{
if ( !isDocletArtifactEmpty( docletArtifacts[i] ) )
{
- path.append( getArtifactAbsolutePath( docletArtifacts[i] )
);
+ path.append( StringUtils.join( getArtifactsAbsolutePath(
docletArtifacts[i] ).iterator(), File.pathSeparator ) );
if ( i < docletArtifacts.length - 1 )
{
@@ -2222,7 +2233,7 @@
&& ( StringUtils.isNotEmpty( tagletArtifact.getArtifactId() ) )
&& ( StringUtils.isNotEmpty( tagletArtifact.getVersion() ) ) )
{
- path.append( getArtifactAbsolutePath( tagletArtifact ) );
+ path.append( StringUtils.join( getArtifactsAbsolutePath(
tagletArtifact ).iterator(), File.pathSeparator ) );
}
else if ( taglets != null )
{
@@ -2236,16 +2247,12 @@
continue;
}
- if ( current.getTagletArtifact() != null )
- {
- tagletsPath.add( getArtifactAbsolutePath(
current.getTagletArtifact() ) );
- }
- else if ( ( current.getTagletArtifact() != null )
+ if ( ( current.getTagletArtifact() != null )
&& ( StringUtils.isNotEmpty(
current.getTagletArtifact().getGroupId() ) )
&& ( StringUtils.isNotEmpty(
current.getTagletArtifact().getArtifactId() ) )
&& ( StringUtils.isNotEmpty(
current.getTagletArtifact().getVersion() ) ) )
{
- tagletsPath.add( getArtifactAbsolutePath(
current.getTagletArtifact() ) );
+ tagletsPath.addAll( getArtifactsAbsolutePath(
current.getTagletArtifact() ) );
}
else if ( StringUtils.isNotEmpty( current.getTagletpath() ) )
{
@@ -2266,29 +2273,57 @@
}
/**
- * Return the Javadoc artifact path from the local repository
+ * Return the Javadoc artifact path and its transitive dependencies path
from the local repository
*
* @param javadocArtifact
- * @return the locale artifact path
- * @throws MavenReportException
+ * @return a list of locale artifacts absolute path
+ * @throws MavenReportException if any
*/
- private String getArtifactAbsolutePath( JavadocPathArtifact
javadocArtifact )
+ private List getArtifactsAbsolutePath( JavadocPathArtifact javadocArtifact
)
throws MavenReportException
{
if ( ( StringUtils.isEmpty( javadocArtifact.getGroupId() ) )
&& ( StringUtils.isEmpty( javadocArtifact.getArtifactId() ) )
&& ( StringUtils.isEmpty( javadocArtifact.getVersion() ) ) )
{
- return "";
+ return Collections.EMPTY_LIST;
}
+ List path = new ArrayList();
+
Artifact artifact = factory.createArtifact(
javadocArtifact.getGroupId(), javadocArtifact.getArtifactId(),
-
javadocArtifact.getVersion(), "compile", "jar" );
+
javadocArtifact.getVersion(), Artifact.SCOPE_COMPILE, "jar" );
+
try
{
+ // Find the Javadoc Artifact in the local repo
resolver.resolve( artifact, remoteRepositories, localRepository );
+ path.add( artifact.getFile().getAbsolutePath() );
- return artifact.getFile().getAbsolutePath();
+ // Find its transitive dependencies in the local repo
+ MavenProject artifactProject =
mavenProjectBuilder.buildFromRepository( artifact, remoteRepositories,
+
localRepository );
+ Set dependencyArtifacts = artifactProject.createArtifacts(
factory, null, null );
+ if ( !dependencyArtifacts.isEmpty() )
+ {
+ ArtifactResolutionResult result =
resolver.resolveTransitively( dependencyArtifacts, artifactProject
+ .getArtifact(),
artifactProject.getRemoteArtifactRepositories(), localRepository,
+
artifactMetadataSource );
+ Set artifacts = result.getArtifacts();
+
+ Map compileArtifactMap = new HashMap();
+ populateCompileArtifactMap( compileArtifactMap, artifacts );
+
+ for ( Iterator it = compileArtifactMap.keySet().iterator();
it.hasNext(); )
+ {
+ String key = it.next().toString();
+
+ Artifact a = (Artifact) compileArtifactMap.get( key );
+ path.add( a.getFile().getAbsolutePath() );
+ }
+ }
+
+ return path;
}
catch ( ArtifactResolutionException e )
{
@@ -2298,6 +2333,14 @@
{
throw new MavenReportException( "Unable to find artifact:" +
javadocArtifact, e );
}
+ catch ( ProjectBuildingException e )
+ {
+ throw new MavenReportException( "Unable to build the Maven project
for the artifact:" + javadocArtifact, e );
+ }
+ catch ( InvalidDependencyVersionException e )
+ {
+ throw new MavenReportException( "Unable to resolve artifact:" +
javadocArtifact, e );
+ }
}
/**