【问题标题】:How to set custom Java compiler args on an Android project?如何在 Android 项目上设置自定义 Java 编译器参数?
【发布时间】:2017-07-05 16:13:37
【问题描述】:

我将以下内容放在我的项目 gradle 文件的末尾:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs += 
            ['-Xep:MissingOverride:ERROR', 
             '-Xep:MissingCasesInEnumSwitch:ERROR',]
    }
}

但是,在我的代码中,如果我在某处删除 @Override 注释或删除 switch 语句,我的 Android 项目仍然可以构建。它不应该因错误而失败吗?

【问题讨论】:

  • 我不知道它对于 android 项目的行为是否不同,但对于我们的 java EE 构建,我实现了这个:compileJava{ options.fork = true options.forkOptions.executable = 'javac' options.compilerArgs.addAll( [ '-APackageAcronym='+gradle.ext.packageAcronym, '-s', gradle.ext.generatedQueriesDir ] ) } 因为 compileJava 是它自己的任务。
  • 您是否将compileJava 放在根级别?如果我这样做,我会收到以下错误消息:“错误:找不到方法 compileJava() ...”
  • 是的,我把它放在了根级别。我认为这对于 android gradle 构建有所不同?只是想试一试:)对不起,我浪费了你的时间。
  • 不,谢谢你的建议!感谢您付出时间。 :)
  • 我google了一下,看来android真的隐藏了任务compileJava并拒绝访问它。但我发现这种平静似乎对其他用户有用 allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } } 在这里找到:stackoverflow.com/questions/18689365/… compileJava 任务信息:stackoverflow.com/questions/16853130/…

标签: java android gradle android-gradle-plugin javac


【解决方案1】:

我用谷歌搜索了你的问题并找到了这个post 描述了您的问题,解决方案如下所示:

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

Android 项目的 gradle 构建似乎与 java 项目不同,并且您无法访问任务 CompileJava 本身,如我在第一条评论中所述。

【讨论】:

    猜你喜欢
    • 2018-10-23
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2020-10-24
    • 2011-03-30
    • 2011-10-04
    相关资源
    最近更新 更多