首页 > 解决方案 > Gradle:以编程方式为 compileJava 任务指定编译器选项

问题描述

我有一个带有compileJava任务的 gradle 脚本,我希望它提供两个不同的Jar任务,jar并且jarForce. 该jarForce任务应该编译带有-Awarns选项的源代码,以便将注释处理器错误视为警告,并且该jar任务应该使用默认参数运行编译,以便在出现任何注释处理器错误时编译失败。我怎样才能做到这一点?

标签: javagradlegroovybuildannotation-processing

解决方案


考虑以下内容,它将选项修改为在任务图compileJava中的情况下:jarForce

apply plugin: 'java'

gradle.taskGraph.whenReady { taskGraph ->
    if (taskGraph.hasTask(jarForce)) {
        println "TRACER jarForce detected"

        // we use verbose simply to illustrate that the options are changed
        compileJava.options.compilerArgs << "-verbose"
        compileJava.options.compilerArgs << "-Awarns"
    }
}

task jarForce(dependsOn: 'jar') {
    doFirst {
        println "TRACER jarForce"
    }
}

如果您执行gradle clean jarvs gradle clean jarForce,您会看到输出完全不同,因为我们使用-verbose它作为示例。的使用-Awarns留给读者。


推荐阅读