使用Java 9使"gradle javadoc"任务正常工作

0xb*_*7ed 3 java javadoc gradle java-platform-module-system java-9

我有一个使用source/target = 1.9/1.9的多模块Gradle Java项目.有两个模块,my.basemy.dependsOnBase.该my.base模块没有其它的依赖:

module my.base {
    exports my.base.foo;
    exports my.base.bar;
}
Run Code Online (Sandbox Code Playgroud)

所述my.dependsOnBase模块仅具有单一的依赖,这是my.base:

module my.dependsOnBase {
    requires my.base;
    exports my.dependsOnBase.baz;
}
Run Code Online (Sandbox Code Playgroud)

当我运行$ gradle javadoc它在my.base上工作正常.但是当它到达my.dependsOnBase时,我得到以下错误输出:

/path/to/my $ gradle javadoc

> Task :dependsOnBase:javadoc FAILED
/path/to/my/dependsOnBase/src/main/java/module-info.java:26: error: module not found: my.base
    requires my.base;
                     ^
1 error


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':dependsOnBase:javadoc'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/path/to/my/dependsOnBase/build/tmp/javadoc/javadoc.options'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
7 actionable tasks: 3 executed, 4 up-to-date
Run Code Online (Sandbox Code Playgroud)

在项目的早期,我能够使用以下方法获得Java编译,这也遇到了类似的问题:

compileJava {
    inputs.property("moduleName", moduleName)
    doFirst {
        options.compilerArgs = [
                '--module-path', classpath.asPath,
        ]
        classpath = files()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这些属性不能直接应用于Gradle javadoc任务.

我怎样才能让我的Javadoc工作?

Tho*_*nan 5

这对我有用

javadoc {
  inputs.property("moduleName", moduleName)
  doFirst {
    options.addStringOption('-module-path', classpath.asPath)
  }
}
Run Code Online (Sandbox Code Playgroud)