如何通过 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
我有一个 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