我有一个 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"]
}
我必须在 kotlin 项目中添加对参数的支持。 方法是设置 javaParameters kotlin 选项
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
javaParameters = true
}
@Crazyjavahacking 的回答是正确的
另外,请检查您是否像我一样在使用其他参数的子项目中重新定义了它(在我的例子中是mapstruct):
options.compilerArgs = ['-Amapstruct.defaultComponentModel=spring'] // do not do this
始终附加参数
options.compilerArgs << '-Amapstruct.defaultComponentModel=spring'
希望它可以为其他人节省一些时间,我个人损失了 2 个小时,因为我完全忘记了子项目中的这一行并且专注于主 build.gradle
当在 Java 项目中使用 Kotlin 配置文件时,带有
build.gradle.kts
文件,上述建议不起作用。这做到了:
tasks.withType<JavaCompile> {
// Support Beam's @JavaBeanSchema with @SchemaCreate all-args constructors
options.compilerArgs.add("-parameters")
}
compileJava {
options.compilerArgs.addAll(['--release', javaVersion])
}