You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Tamas Cservenak (Jira)" <ji...@apache.org> on 2023/10/28 20:20:00 UTC
[jira] [Commented] (MJAVADOC-769) javadoc plugin can not deal with transitive filename based modules
[ https://issues.apache.org/jira/browse/MJAVADOC-769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17780652#comment-17780652 ]
Tamas Cservenak commented on MJAVADOC-769:
------------------------------------------
Same happens in this very moment with maven-resolver master branch (e721b01be9576396e36e4167da337180b44e38e9), but situation is _slightly different_:
* resolver project got new Java11 module (new transport using java.net.http.HttpClient)
* Javadoc fails on it due issues described in this issue (expects maven-resolver-transport-jdk to be a module which is not)
* sadly, Automatic-Module-Names were present since eons due MRESOLVER-26
* and fix of this issue does not help, as it is about Report and not Mojo. Basically this issue fixed Mojos, but seems Report duplicates same logic and suffers from same issue
> javadoc plugin can not deal with transitive filename based modules
> ------------------------------------------------------------------
>
> Key: MJAVADOC-769
> URL: https://issues.apache.org/jira/browse/MJAVADOC-769
> Project: Maven Javadoc Plugin
> Issue Type: Bug
> Components: javadoc
> Affects Versions: 3.5.0
> Reporter: Henning Schmiedehausen
> Assignee: Henning Schmiedehausen
> Priority: Major
> Fix For: 3.6.0
>
>
> clone this repository: https://github.com/hgschmie/mjavadoc769
> This builds an artifact, a tests artifact and a javadoc jar.
> When building this for Java 9+ compatibility (javadoc generate a list of modules) and using modules with Automatic-Module-Name enabled, the javadoc plugin can not access the optional dependencies:
> {code}
> ERROR] Exit code: 1
> [ERROR] /Users/henning/scratch/mjavadoc769/src/main/java/mavenbugs/mjavadoc769/InternalImportBindingBuilder.java:88: error: cannot access Provider
> [ERROR] static final class InternalBindingProvider<T> implements Provider<T> {
> [ERROR] ^
> [ERROR] class file for javax.inject.Provider not found
> [ERROR] 1 error
> [ERROR] Command line was: /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/javadoc -J-Xmx1024m @options @packages
> {code}
> Note that all other plugins (compiler, surefire) work fine. Just the javadoc plugin does not.
> {code}
> --add-modules
> ALL-MODULE-PATH
> --module-path
> '/Users/henning/.m2/repository/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar:/Users/henning/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1.MR/jakarta.inject-api-2.0.1.MR.jar:/Users/henning/.m2/repository/com/google/inject/guice/5.1.0/guice-5.1.0.jar:/Users/henning/.m2/repository/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.jar:/Users/henning/.m2/repository/com/google/guava/guava/31.1-jre/guava-31.1-jre.jar:/Users/henning/scratch/mjavadoc769/target/mjavadoc769-1.0-SNAPSHOT.jar'
> --patch-module
> mavenbugs.mjavadoc769='/Users/henning/scratch/mjavadoc769/src/main/java:/Users/henning/scratch/mjavadoc769/target/generated-sources/annotations:/Users/henning/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/henning/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/Users/henning/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/henning/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/henning/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar:/Users/henning/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar'
> -encoding
> 'UTF-8'
> -public
> -quiet
> --release
> 11
> -bottom
> 'Copyright © 2023. All rights reserved.'
> -charset
> 'UTF-8'
> -d
> '/Users/henning/scratch/mjavadoc769/target/apidocs'
> -docencoding
> 'UTF-8'
> -Xdoclint:none
> -doctitle
> 'mjavadoc769 1.0-SNAPSHOT API'
> -linkoffline
> 'https://docs.oracle.com/en/java/javase/11/docs/api' '/Users/henning/scratch/mjavadoc769/target/javadoc-bundle-options'
> -nohelp
> -use
> -version
> -windowtitle
> 'mjavadoc769 1.0-SNAPSHOT API'
> {code}
> The javadoc plugin decides that the "javax.inject-1.jar" is added to the classpath even though it is an optional dependency of the main module. Contrary to this, the jakarta.inject-api-2.0.1.MR.jar is added to the module path.
> The reason for this may be that the jakarta module contains a module-info (hidden in META-INF/versions/9/) while the javax.inject jar does not.
> However, the checker-qual (org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar) dependency is put on the module path even though it does not contain a module-info file. However, it contains an {{Automatic-Module-Name}} entry in META-INF/MANIFEST.
> It seems that the javadoc plugin treats automatic dependencies with entry in the manifest different from automatic dependencies determined by filename.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)