禁用Gradle中的所有JavaDoc

Pet*_*ter 19 java javadoc gradle build.gradle

一般更新,经过一些研究后
我想在控制台中运行我的项目gradle 2.0,gradle build我被卡在JavaDoc一代.我使用Java 8,precisly jdk1.8.0_66jre1.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您在上面尝试过的方法.


Asa*_*ssi 5

这就是我禁用它的方式-在我的build.gradle文件中添加了:

tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,当我在反应原生项目中遇到此错误时,我在 build.gradle 的 allprojects {...} 下添加了此代码 (3认同)