【问题标题】:Disable all JavaDoc in Gradle在 Gradle 中禁用所有 JavaDoc
【发布时间】:2016-04-24 18:31:40
【问题描述】:

一般更新,经过一些研究
我想在控制台中使用gradle build 构建运行gradle 2.0 的项目,但我在JavaDoc 生成过程中遇到问题。 我正在使用 Java 8,确切地说是 jdk1.8.0_66jre1.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。它还为 Maven 和 Gradle 提供了解决方案。但对我来说它不起作用,另一个answer I got 也不起作用。我现在在我的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文件中。

【问题讨论】:

    标签: java gradle javadoc build.gradle


    【解决方案1】:

    如果您有一个根项目构建脚本,那么您可以通过它的类型禁用所有子项目的任务。在您的情况下,输入Javadoc,例如:

    subprojects {
        tasks.withType(Javadoc).all { enabled = false }
    }
    

    【讨论】:

    • 嗯,这是一个子项目,我应该在没有其余部分的情况下构建,我只有同一级别的依赖项,但到目前为止的提示还不错:)
    • 嗯,您能否提供一个项目结构示例,包括 roo 文件夹的位置、settings.gradle 文件和一些 build.gradle 文件? subprojects 应该在根 build.gradle 脚本中使用
    • 我只想构建我的子项目,而不是整个项目,因此它有自己的build.gradle
    • 如果你必须明白,根据构建生命周期,根项目的配置(根文件夹上的build.gradle文件)总是执行的,即使你只运行一些子项目的任务跨度>
    • 在你的情况下,我没有看到任何 settings.gradle 文件,它应该代表一个子项目......
    【解决方案2】:

    我也遇到了这个问题,在挖掘 Gradle 的源代码后,我发现了一个适用于 Gradle 2.9 的解决方案。

    试试options.addBooleanOption('Xdoclint:none', true),而不是options.addStringOption('Xdoclint:none', '-quiet')。这应该正确地将 -Xdoclint:none 选项传递给底层的 javadoc 调用,并在仍然产生 Javadoc 输出的同时忽略错误。我直接在 javadoc 任务声明中执行此操作,但它可能会使用您在上面尝试的 allprojects 方法工作。

    【讨论】:

    • 具体来说,这不会“忽略”错误。它会将它们降级为警告。因此,如果您在警告上构建失败,例如 stackoverflow.com/a/33153700/1650674,那么这仍然会导致构建失败。
    【解决方案3】:

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

    tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash
    

    【讨论】:

    • 对我来说,当我在 reactnative 项目中遇到此错误时,我在 build.gradle 的 allprojects {...} 下添加了此代码
    猜你喜欢
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2015-02-14
    • 2013-07-22
    • 2021-08-15
    • 2011-06-10
    相关资源
    最近更新 更多