我想在我的gradle构建上设置-parameters命令,以便我可以使用反射来访问参数的名称。似乎我应该通过以下闭包来做到这一点。
compileJava {
compileOptions {
compilerArgs << '-parameters'
}
}
但是compileOptions被列为只读,当我查看源代码时,没有setter。
我怎么能告诉javac编译器在Gradle中使用什么args?
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_40 (Oracle Corporation 25.40-b25)
OS: Windows 7 6.1 amd64
答案 0 :(得分:8)
tasks.withType(JavaCompile) {
configure(options) {
options.compilerArgs << '-Xlint:deprecation' << '-Xlint:unchecked' // examples
}
}
来源: http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.CompileOptions.html
答案 1 :(得分:7)
请尝试:
apply plugin: 'java'
compileJava {
options.compilerArgs << '-parameters'
}
答案 2 :(得分:4)
您无法覆盖所有选项(因为'options'属性是只读的),但您可以逐个设置它们。例如:
compileJava {
//enable compilation in a separate daemon process
options.fork = true
//enable incremental compilation
options.incremental = true
}
查看文档:{{3}}和https://gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.JavaCompile.html
答案 3 :(得分:4)
如果您使用的是 kotlin,则:
build.gradle.kts
tasks.withType<JavaCompile>(){
options.compilerArgs.addAll(listOf("-nowarn", "-Xlint:none"))
}
答案 4 :(得分:1)
您可以像这样在 App.gradle 文件中使用编译选项:
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "com.example.aliazaz.menuapp"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/*Add Compile options in following block*/
compileOptions {
//Like these
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}