【问题标题】:How can I configure sourceCompatibility and compilerArgs for all modules, java, android application and android library?如何为所有模块、java、android 应用程序和 android 库配置 sourceCompatibility 和 compilerArgs?
【发布时间】:2017-04-28 03:07:17
【问题描述】:

我想在控制台中查看 lint 错误,并且我想配置为只使用一次 java 7 而不是每个模块(我们有 12 个模块)。

我把它放到我的根目录build.gradle:

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

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

我假设有一些比withType(JavaCompile) 更通用的“过滤器”,我必须使用但我找不到它。 Gradle 脚本对我来说仍然很神奇。我尝试了JavaCompile 的超类AbstractCompile,但这并没有成功。

如何避免添加

android {
    …
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
}

对于 Java 版本以及 compilerArgs 对每个 Android 模块的要求?

【问题讨论】:

    标签: java android gradle build.gradle


    【解决方案1】:

    试试这个,它应该对AndroidJava 项目都有效。

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

    【讨论】:

    • 你确定吗?与 OP 问题的唯一区别是“projectsEvaluated”调用,它会变魔术吗?
    • 它应该可以工作。 Android 阻止访问compileJava 任务。添加gradle.projectsEvaluated 可以解决此问题。
    • 谢谢,我会尝试并报告。
    • 对您有帮助吗?
    • 还没来得及尝试,但我想应该可以。不幸的是,我不是问题的作者,我只是为此提交了赏金。我希望他能看到这一点并接受如果他同意的话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2012-10-14
    • 1970-01-01
    • 2022-07-17
    相关资源
    最近更新 更多