如何为Gradle Java插件设置compileOptions?

Jaz*_*epi 12 java gradle

我想在我的gradle构建上设置-parameters命令,以便我可以使用反射来访问参数的名称.似乎我应该通过以下闭包执行此操作.

compileJava {
    compileOptions {
        compilerArgs << '-parameters'
    }
}
Run Code Online (Sandbox Code Playgroud)

但是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
Run Code Online (Sandbox Code Playgroud)

Opa*_*pal 13

请试试:

apply plugin: 'java'

compileJava {
    options.compilerArgs << '-parameters' 
}
Run Code Online (Sandbox Code Playgroud)


Jar*_*ows 13

tasks.withType(JavaCompile) {
    configure(options) {
        options.compilerArgs << '-Xlint:deprecation' << '-Xlint:unchecked' // examples
    }
}
Run Code Online (Sandbox Code Playgroud)

资料来源: http ://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.CompileOptions.html


Raf*_* G. 6

您不能覆盖所有选项(因为“ options”属性是只读的),但是可以一个一个地设置它们。例如:

compileJava {
    //enable compilation in a separate daemon process
    options.fork = true

    //enable incremental compilation
    options.incremental = true
}
Run Code Online (Sandbox Code Playgroud)

查看文档:https : //gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.JavaCompile.htmlhttps://gradle.org/docs/current/dsl/org.gradle .api.tasks.compile.CompileOptions.html


Ali*_*lam 5

您可以在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
    }

}
Run Code Online (Sandbox Code Playgroud)


use*_*141 5

If you're using kotlin, then:

build.gradle.kts

tasks.withType<JavaCompile>(){
    options.compilerArgs.addAll(listOf("-nowarn", "-Xlint:none"))
}
Run Code Online (Sandbox Code Playgroud)