From 72046ff41b90a7667b07396623487f128542922f Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 18 Nov 2017 11:43:45 +0000 Subject: [PATCH 1/2] [MJAVADOC-489] Find the main module descriptor The existing code was checking for the existence of a file "src/main/module-info.java" relative to the current directory. The problem is that in a multi-module build, the current directory is the project root, not the root of the current module. As a result, the module descriptor was not being found and all dependencies were ending up on the classpath instead. Fixes: MJAVADOC-489 --- .../plugins/javadoc/AbstractJavadocMojo.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java index 056198d200..f65bf0cd4b 100644 --- a/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java +++ b/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java @@ -4653,9 +4653,11 @@ private void addJavadocOptions( List arguments, List sourcePaths addArgIf( arguments, breakiterator, "-breakiterator", SINCE_JAVADOC_1_5 ); } - File mainDescriptor = new File( "src/main/java/module-info.java" ); - - if ( mainDescriptor.exists() && !isTest() ) + List roots = getProjectSourceRoots( getProject() ); + + File mainDescriptor = findMainDescriptor( roots ); + + if ( mainDescriptor != null && !isTest() ) { LocationManager locationManager = new LocationManager(); ResolvePathsRequest request = @@ -4739,6 +4741,19 @@ private void addJavadocOptions( List arguments, List sourcePaths } } + private static File findMainDescriptor( List roots ) + { + for ( String root : roots ) + { + File descriptorFile = new File( root, "module-info.java" ).getAbsoluteFile(); + if ( descriptorFile.exists() ) + { + return descriptorFile; + } + } + return null; + } + /** * Add Standard Doclet Options. *
From 1acff94aea2eb87019fdd1b20559e2fe8f556649 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 18 Nov 2017 12:45:47 +0000 Subject: [PATCH 2/2] Fail quickly on non-file module-info.java This adjusts the previous patch to quickly and loudly reject filesystem entries named module-info.java that turn out not to be regular files. Affects: MJAVADOC-489 --- .../apache/maven/plugins/javadoc/AbstractJavadocMojo.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java index f65bf0cd4b..f22bcf66e0 100644 --- a/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java +++ b/maven-javadoc-plugin/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java @@ -4742,12 +4742,17 @@ private void addJavadocOptions( List arguments, List sourcePaths } private static File findMainDescriptor( List roots ) + throws MavenReportException { for ( String root : roots ) { File descriptorFile = new File( root, "module-info.java" ).getAbsoluteFile(); if ( descriptorFile.exists() ) { + if ( !descriptorFile.isFile() ) + { + throw new MavenReportException( descriptorFile + " is not a regular file" ); + } return descriptorFile; } }