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

How to pass -parameters javac flag to Java compiler via Gradle?

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

我试过这个:

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

...但它似乎无法正常工作。

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

apply plugin: 'java'

compileJava {
    options.compilerArgs << '-parameters'
}

对于 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"]
}
compileJava {
  options.compilerArgs.addAll(['--release', javaVersion])
}

@Crazyjavahacking 的回答是正确的

此外,请检查您是否像我一样在使用其他参数(在我的例子中为 mapstruct)的子项目中重新定义它:

options.compilerArgs = ['-Amapstruct.defaultComponentModel=spring'] // do not do this

始终附加参数 options.compilerArgs << '-Amapstruct.defaultComponentModel=spring'

希望它可以为其他人节省一些时间,我个人损失了 2 个小时,因为我完全忘记了子项目中的这一行并且专注于主要 build.gradle