如何为Gradle Java插件设置compileOptions?

时间:2015-04-12 19:10:43

标签: java gradle

我想在我的gradle构建上设置-parameters命令,以便我可以使用反射来访问参数的名称。似乎我应该通过以下闭包来做到这一点。

compileJava {
    compileOptions {
        compilerArgs << '-parameters'
    }
}

但是compileOptions被列为只读,当我查看源代码时,没有setter。

https://gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.JavaCompile.html#org.gradle.api.tasks.compile.JavaCompile:options

我怎么能告诉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

5 个答案:

答案 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
    }

}