Pet*_*ter 19 java javadoc gradle build.gradle
一般更新,经过一些研究后
我想在控制台中运行我的项目gradle 2.0
,gradle build
我被卡在JavaDoc一代.我使用Java 8,precisly jdk1.8.0_66
和jre1.8.0_66
.现在当我想gradle build
在我的powershell中输入我的项目时,我得到了这个错误:
5 errors
10 warnings
:my-subproject1:javadoc FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':my-subproject1:javadoc'.
> Javadoc generation failed.
Run Code Online (Sandbox Code Playgroud)
一个样本错误和一个样本警告:
C:\some\long\path\MyClass.java:37: error: @param name not found
* @param appCode
^
C:\some\long\path\MyOtherClass.java:37: warning: no description for @param
* @param appCode
Run Code Online (Sandbox Code Playgroud)
如果我tasks.findByPath(":my-subproject:javadoc").enabled = false
在我的build.gradle
文件中禁用了我的一个子项目,我会在下一个子项目中得到相同的错误.
研究表明,我并不孤单.Java 8似乎对JavaDoc非常严格.这是由于新的doclint for Javadoc
.在这个网站上找到.它还为Maven和Gradle提供了解决方案.但对我来说它不起作用,我得到的另一个答案也不起作用.我在build.gradle
这个子项目中尝试解决它现在看起来像这样:
//Solution by the second link
allprojects {
tasks.withType(Javadoc).all { enabled = false }
}
//Solution by the first link
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}
dependencies{
compile project(':my-subproject1')
compile project(':my-subproject2')
compile project(':my-subproject3')
}
Run Code Online (Sandbox Code Playgroud)
有人知道如何解决这个问题还是有另一种解决方法?
编辑:
C:. | Root
????build.gradle
? ????2.0
? ????taskArtifacts
????buildSrc
? ????.gradle
? ? ????2.0
? ? ? ????taskArtifacts
? ? ????noVersion
? ? ????buildSrc
? ????build
? ? ????classes
? ? ? ????main
? ? ????dependency-cache
? ? ????libs
? ? ????tmp
? ????src
? ????main
? ????java
? ????com
? ????custom
? ????gradle
? ????util
????my-subproject1
????my-subproject2
????my-subproject3
? ????my-sub-subproject
? ????my-current-directory | Magic happens here
? ? ????some.package.identifier
? ? ? ????.clover
? ? ? ????.settings
? ? ? ????bin
? ? ? ? ????package
? ? ? ? ????subpackage
? ? ? ????buil.gradle | This should build my subproject
Run Code Online (Sandbox Code Playgroud)
解决方案:将其放在根build.gradle
文件中.
Sta*_*lav 49
如果您有根项目构建脚本,则可以按类型禁用所有子项目的任务.在您的情况下,按类型Javadoc
,如:
subprojects {
tasks.withType(Javadoc).all { enabled = false }
}
Run Code Online (Sandbox Code Playgroud)
jgi*_*son 12
我也遇到了这个问题,在深入研究Gradle的源代码后,我找到了一个适用于Gradle 2.9的解决方案.
而不是options.addStringOption('Xdoclint:none', '-quiet')
尝试options.addBooleanOption('Xdoclint:none', true)
.这应该正确地将-Xdoclint:none
选项传递给底层的javadoc调用,并在仍然生成Javadoc输出时忽略错误.我在javadoc任务声明中直接执行了此操作,但它可能会使用allprojects
您在上面尝试过的方法.
这就是我禁用它的方式-在我的build.gradle文件中添加了:
tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash
Run Code Online (Sandbox Code Playgroud)