当前位置: 首页 > 面试题库 >

如何在Javadoc警告上失败gradle构建

万承志
2023-03-14
问题内容

我正在使用Java
7(尽管使用1.6进行了编译)来编译类和javadocs。我已经消除了所有出现的javadoc警告,但想法是如果有任何javadoc警告,则构建失败。

使用Java
8,这是默认行为。但是,在警告方面也要严格得多(如果方法未列出所有@params或@returns,则我们不希望发出警告)。另外,我认为该公司不会很快升至8,所以这是一个有争议的问题。

我希望有一些容易设置的标志,以在发生警告时使gradle失败(只有failonError)。我当时在想的是刮掉javadoc进程的控制台输出。如果该输出包含警告,那么我知道有警告,并且构建应该失败。

这是我的build.gradle中的javadoc块:

task gendocs(type: Javadoc) {
options.stylesheetFile = new File("./assets/doc_style.css")
options.windowTitle = "OurTitle"
options.memberLevel = JavadocMemberLevel.PROTECTED
options.author = true
options.linksOffline('http://d.android.com/reference', System.getenv("ANDROID_HOME") + '/docs/reference')
String v = "${SEMVER}"
version = v.replace("_", '.')
destinationDir = new File("${BUNDLE_FOLDER}/docs/api")
source = sourceSets.main.allJava
classpath += configurations.compile
}

因此,如果没有更简便的方法可以执行此操作,如何检查javadoc的控制台输出以将其抓取?


问题答案:

注意:我已经完全替换了原来的答案,因为我找到了一个更好的答案-并不那么难看:

import org.gradle.logging.internal.OutputEvent
import org.gradle.logging.internal.OutputEventListener

        task("javadocCheck",type:Javadoc){
            // regular javadoc task configuration

            def outputEvents = []
            def listener=new OutputEventListener(){
                    void onOutput(OutputEvent event){
                        outputEvents << event
                    }
                };
            doFirst {
                getLogging().addOutputEventListener(listener)
            }
            doLast {
                getLogging().removeOutputEventListener(listener)
                outputEvents.each { e ->
                    if(e.toString() =~ " warning: "){
                        throw new GradleException("You have some javadoc warnings, please fix them!");
                    }
                }
            }
        }


 类似资料:
  • 所以我有一个基于gradle的java项目,有大量匈牙利文档字符串,这意味着很多非ASCII字符。 这是完全好的,因为javac在源代码中使用utf-8字符,而根据我的知识,javadoc也应该使用。 在构建中,gradle有一个创建java doc jar的任务 当我运行时,它会失败,出现以下错误: :compileJava C:\home\projects\inventorycore\src\

  • 我收到一条错误消息: 对此,我进行了讨论:https://groups.google.com/forum/#!主题/vertx/bws3x9-WsV0,其中一个回复是: 你如何开始垂直。x?CLI和启动器类中有一个主机名检测机制。如果您有自己的主类,请确保正确设置ClusterHost选项。 因此,我在中查找描述https://vertx.io/docs/vertx-hazelcast/java/

  • 我用android Studio 0.4.0创建了一个简单的android项目。我使用Gradle 1.9和Gradle Android插件0.7。昨天,我在gradle构建脚本中添加了Jake Wharton的Butternife库: 当我从Android Studio运行应用程序时,构建运行良好,并在我的设备上正确执行。但是当我尝试(从命令行)时,构建失败了。以下是我的林特报告中的一部分: 也

  • 我有一个JHipster项目,我在build.gradle中添加了对Lombok的依赖: 我为IntelliJ安装了Lombok插件。我已经在IntelliJ中打开了注释处理,我可以在IntelliJ IDE中生成而不出错,但是当我尝试从命令行生成时,会出现生成错误。Gradle似乎没有处理注释,也找不到getter/setter和log声明。项目运行时也不会出现任何错误。 命令行: 错误: 错误

  • 我使用的是Unity 2019.3.3f1个人版,当我尝试构建64位时,我遇到了212个错误。我认为这是最重要的一个,所以我只是粘贴这些: 命令InvokationFailure: Gradle构建失败。C:/程序文件/统一/集线器/编辑器/2019.3.3f1/编辑器/数据/播放引擎/Android玩家\OpenJDK\bin\java.exe-classpath"C:\程序文件\统一\集线器\