如何通过Gradle将-parameters javac标志传递给Java编译器?

Jus*_*bie 19 javac gradle

我有一个Gradle管理的多项目设置,它依赖于新的Java 8 -parameters编译器标志.我需要2种方法来包含编译器标志:

  • 仅测试类(主项目应编译时不附加参数名称).
  • 致所有编译来源.

我试过这个:

  tasks.withType(JavaCompile) {
    options.compilerArgs << '-parameters'
    options.fork = true
    options.forkOptions.executable = 'javac'
  }
Run Code Online (Sandbox Code Playgroud)

......但它似乎没有正常工作.

Cra*_*ing 20

您应该使用配置Java编译插件的标准方法:

apply plugin: 'java'

compileJava {
    options.compilerArgs << '-parameters'
}
Run Code Online (Sandbox Code Playgroud)

  • 代码片段可以工作(当然),但是提供的注释有点......所以,“标准”实际上与 Gradle 人员推荐的完全相反。请求者使用的方法更接近于使用配置避免,以及为所有“sourceSets”配置任务等(“compileJava”仅影响“main”sourceSet)。“接受”的答案并非如此,下面的答案要好得多。@JustACluelessNewbie 重新考虑一下。) Gradle 专家做出了一些赞成/反对的投票。抱歉批评评论。) (2认同)
  • 但下面的答案似乎与如何传递 `-parameters` 的问题无关,他们引用的是 Spring、Dagger 还是发布版本? (2认同)

jay*_*kay 8

对于Android项目,可以在gradle android范围中添加以下内容.

// Used to get more info from dagger regarding binding compile errors
// see https://github.com/google/dagger/wiki/Dagger-2.17-@Binds-bugs
tasks.withType(JavaCompile) {
    options.compilerArgs += ["-Adagger.floatingBindsMethods=enabled"]
}
Run Code Online (Sandbox Code Playgroud)