如何为所有模块、Java、Android 应用程序和 Android 库配置 sourceCompatibility 和 compilerArgs?

13

我想在控制台中查看lint错误,并且希望仅配置一次使用Java 7而不是每个模块都要配置(我们有12个模块)。

我将这个代码放入我的根build.gradle文件中:

allprojects {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:deprecation,unchecked"
        sourceCompatibility = 1.7
        targetCompatibility = 1.7
    }
}

它确实适用于纯Java项目(在其自己的build.gradle中应用插件:apply plugin: 'java'),但不适用于com.android.applicationcom.android.library模块。

我猜想除了withType(JavaCompile)之外,还有一些更普遍的“过滤器”我必须使用,但是我找不到它。Gradle脚本对我来说仍然是魔法。浏览一下,我尝试了JavaCompile的超级类AbstractCompile,但那行不通。

如何避免添加

android {
    …
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
}

对于Java版本以及编译器参数应用于每个Android模块的操作,需要做什么?

1个回答

5

尝试这个,它应该适用于AndroidJava项目。

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:deprecation,unchecked"
            sourceCompatibility = 1.7
            targetCompatibility = 1.7
        }
    }
}

你确定吗?与 OP 的问题唯一的区别是 "projectsEvaluated" 调用,它会奏效吗? - dimsuz
应该可以工作。安卓防止访问compileJava任务。添加gradle.projectsEvaluated修复这个问题。 - ToYonos
谢谢,我会试一下并汇报回来。 - dimsuz
它有帮到你吗? - ToYonos
还没有时间尝试,但我猜应该可以工作。不幸的是,我不是这个问题的作者,我只是为它提交了赏金。我希望他能看到这个并且如果他同意的话就接受它。 - dimsuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接