在 Gradle 中禁用所有 JavaDoc
Disable all JavaDoc in Gradle
一般更新,经过一些研究
我想在控制台中用 gradle build
构建我的项目 运行 gradle 2.0
我卡在了 JavaDoc 生成。
我正在使用 Java 8,准确地说是 jdk1.8.0_66
和 jre1.8.0_66
。现在,当我想在我的 powershell 中输入 gradle build
构建我的项目时,我收到此错误:
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.
一个示例错误和一个示例警告:
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
如果我在我的 build.gradle
文件中使用 tasks.findByPath(":my-subproject:javadoc").enabled = false
禁用我的一个子项目,我会在下一个子项目中遇到同样的错误。
研究表明,我并不孤单。 Java 8 似乎对 JavaDoc 非常严格。这是由于新 doclint for Javadoc
。
在 this site. It also provides a solution for Maven and Gradle. But for me it doesn't work, another 上找到也不起作用。我现在在我的 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')
}
有人知道如何解决这个问题或者有其他解决方法吗?
编辑:
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
解决方法:放在根build.gradle
文件中。
如果您有一个根项目构建脚本,那么您可以通过它的类型禁用所有子项目的任务。在您的情况下,按类型 Javadoc
,如:
subprojects {
tasks.withType(Javadoc).all { enabled = false }
}
我 运行 也参与其中,在深入研究 Gradle 的源代码后,我找到了一个适用于 Gradle 2.9.
的解决方案
尝试 options.addBooleanOption('Xdoclint:none', true)
而不是 options.addStringOption('Xdoclint:none', '-quiet')
。这应该正确地将 -Xdoclint:none
选项传递给底层 javadoc 调用并忽略错误,同时仍然生成 Javadoc 输出。我直接在 javadoc 任务声明中这样做了,但它可能会使用您在上面尝试过的 allprojects
方法。
这就是我禁用它的方式 - 在我的 build.gradle 文件中添加了:
tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash
一般更新,经过一些研究
我想在控制台中用 gradle build
构建我的项目 运行 gradle 2.0
我卡在了 JavaDoc 生成。
我正在使用 Java 8,准确地说是 jdk1.8.0_66
和 jre1.8.0_66
。现在,当我想在我的 powershell 中输入 gradle build
构建我的项目时,我收到此错误:
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.
一个示例错误和一个示例警告:
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
如果我在我的 build.gradle
文件中使用 tasks.findByPath(":my-subproject:javadoc").enabled = false
禁用我的一个子项目,我会在下一个子项目中遇到同样的错误。
研究表明,我并不孤单。 Java 8 似乎对 JavaDoc 非常严格。这是由于新 doclint for Javadoc
。
在 this site. It also provides a solution for Maven and Gradle. But for me it doesn't work, another 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')
}
有人知道如何解决这个问题或者有其他解决方法吗?
编辑:
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
解决方法:放在根build.gradle
文件中。
如果您有一个根项目构建脚本,那么您可以通过它的类型禁用所有子项目的任务。在您的情况下,按类型 Javadoc
,如:
subprojects {
tasks.withType(Javadoc).all { enabled = false }
}
我 运行 也参与其中,在深入研究 Gradle 的源代码后,我找到了一个适用于 Gradle 2.9.
的解决方案尝试 options.addBooleanOption('Xdoclint:none', true)
而不是 options.addStringOption('Xdoclint:none', '-quiet')
。这应该正确地将 -Xdoclint:none
选项传递给底层 javadoc 调用并忽略错误,同时仍然生成 Javadoc 输出。我直接在 javadoc 任务声明中这样做了,但它可能会使用您在上面尝试过的 allprojects
方法。
这就是我禁用它的方式 - 在我的 build.gradle 文件中添加了:
tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash