You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2019/10/25 10:48:37 UTC
[maven-javadoc-plugin] 01/02: [MJAVADOC-612] some work on this
This is an automated email from the ASF dual-hosted git repository.
olamy pushed a commit to branch MJAVADOC-612
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git
commit caf2e25284e3caf9296d43eb342bf82509b733f8
Author: olivier lamy <ol...@apache.org>
AuthorDate: Thu Jun 27 17:44:07 2019 +1000
[MJAVADOC-612] some work on this
Signed-off-by: olivier lamy <ol...@apache.org>
---
pom.xml | 2 +-
.../maven/plugins/javadoc/AbstractJavadocMojo.java | 43 ++++++++++++++++++++--
2 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index 0bb2616..720e4f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,7 +243,7 @@ under the License.
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-java</artifactId>
- <version>1.0.3</version>
+ <version>1.0.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
index 9250cd0..ccfa791 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -449,6 +449,16 @@ public abstract class AbstractJavadocMojo
private String javadocExecutable;
/**
+ * Sets the absolute path of the jdk home. It's used to extract jpms information.
+ * If null it will be calculated from the javadocExecutable
+ *
+ * @since 3.1.1
+ *
+ */
+ @Parameter( property = "jdkHome" )
+ private String jdkHome;
+
+ /**
* Version of the Javadoc Tool executable to use, ex. "1.3", "1.5".
*
* @since 2.3
@@ -3714,6 +3724,27 @@ public abstract class AbstractJavadocMojo
// We bravely ignore FTP because no one (probably) uses FTP for Javadoc
}
+ private String getJavadocCommand()
+ {
+ return "javadoc" + ( SystemUtils.IS_OS_WINDOWS ? ".exe" : "" );
+ }
+
+ /**
+ * we assume it's the main directory of the javadoc executable (with jdkHome/bin/javadoc)
+ * @return The java_home used to build the Javadoc
+ */
+ private File getJdkHome()
+ throws IOException
+ {
+ if ( org.apache.commons.lang.StringUtils.isNotEmpty( jdkHome ) )
+ {
+ return new File( jdkHome );
+ }
+ String jdkHome = org.apache.commons.lang.StringUtils.removeEnd( getJavadocExecutable(), getJavadocCommand() );
+ File home = new File( jdkHome, File.separator + " .." );
+ return home.exists() ? home : SystemUtils.getJavaHome();
+ }
+
/**
* Get the path of the Javadoc tool executable depending the user entry or try to find it depending the OS
* or the <code>java.home</code> system property or the <code>JAVA_HOME</code> environment variable.
@@ -3739,7 +3770,7 @@ public abstract class AbstractJavadocMojo
}
}
- String javadocCommand = "javadoc" + ( SystemUtils.IS_OS_WINDOWS ? ".exe" : "" );
+ String javadocCommand = getJavadocCommand();
File javadocExe;
@@ -4987,7 +5018,12 @@ public abstract class AbstractJavadocMojo
for ( Map.Entry<String, Collection<Path>> projectSourcepaths : allSourcePaths.entrySet() )
{
MavenProject aggregatedProject = reactorKeys.get( projectSourcepaths.getKey() );
- if ( aggregatedProject != null && !"pom".equals( aggregatedProject.getPackaging() ) )
+ // FIXME not the best here with this list of packaging as there is more...
+ ArtifactHandler artifactHandler = aggregatedProject.getArtifact().getArtifactHandler();
+ if ( aggregatedProject != null
+// && !"pom".equals( aggregatedProject.getPackaging() )
+// && !"war".equals( aggregatedProject.getPackaging() )
+ && "java".equals( artifactHandler.getLanguage() ) )
{
ResolvePathResult result = null;
@@ -4995,9 +5031,10 @@ public abstract class AbstractJavadocMojo
File artifactFile = getArtifactFile( aggregatedProject );
if ( artifactFile != null )
{
- ResolvePathRequest<File> request = ResolvePathRequest.ofFile( artifactFile );
try
{
+ ResolvePathRequest<File> request = ResolvePathRequest.ofFile( artifactFile )
+ .setJdkHome( getJdkHome() );
result = locationManager.resolvePath( request );
}
catch ( RuntimeException e )