使 "gradle javadoc" 任务与 Java 一起工作 9
Make "gradle javadoc" task work with Java 9
我有一个使用 source/target = 1.9/1.9 的多模块 Gradle Java 项目。有两个模块,my.base和my.dependsOnBase。 my.base 模块没有其他依赖项:
module my.base {
exports my.base.foo;
exports my.base.bar;
}
my.dependsOnBase模块只有一个依赖,即my.base:
module my.dependsOnBase {
requires my.base;
exports my.dependsOnBase.baz;
}
当我 运行 $ 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
在项目的早期,我能够得到 Java 编译,它遇到了类似的问题,使用:
compileJava {
inputs.property("moduleName", moduleName)
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
但这些属性并不直接适用于 Gradle javadoc
任务。
如何让我的 Javadoc 正常工作?
这对我有用
javadoc {
inputs.property("moduleName", moduleName)
doFirst {
options.addStringOption('-module-path', classpath.asPath)
}
}
我在 Gradle 7.1 上试过这个,但无法正常工作,但经过一些修改后发现添加此代码段可以正常工作:
tasks.withType(Javadoc) {
doFirst {
options.modulePath = [] + classpath.files
options.classpath = []
}
}
[] + ...
似乎是从 Gradle 返回的 org.gradle.api.internal.file.UnionFileCollection
中创建列表的必要解决方法。或者,您可以使用 new ArrayList(classpath.files)
来实现相同的目的。
我有一个使用 source/target = 1.9/1.9 的多模块 Gradle Java 项目。有两个模块,my.base和my.dependsOnBase。 my.base 模块没有其他依赖项:
module my.base {
exports my.base.foo;
exports my.base.bar;
}
my.dependsOnBase模块只有一个依赖,即my.base:
module my.dependsOnBase {
requires my.base;
exports my.dependsOnBase.baz;
}
当我 运行 $ 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
在项目的早期,我能够得到 Java 编译,它遇到了类似的问题,使用:
compileJava {
inputs.property("moduleName", moduleName)
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
但这些属性并不直接适用于 Gradle javadoc
任务。
如何让我的 Javadoc 正常工作?
这对我有用
javadoc {
inputs.property("moduleName", moduleName)
doFirst {
options.addStringOption('-module-path', classpath.asPath)
}
}
我在 Gradle 7.1 上试过这个,但无法正常工作,但经过一些修改后发现添加此代码段可以正常工作:
tasks.withType(Javadoc) {
doFirst {
options.modulePath = [] + classpath.files
options.classpath = []
}
}
[] + ...
似乎是从 Gradle 返回的 org.gradle.api.internal.file.UnionFileCollection
中创建列表的必要解决方法。或者,您可以使用 new ArrayList(classpath.files)
来实现相同的目的。