具有不同属性的Gradle运行配置

Ole*_*hyi 5 java gradle

这是我的意见:

Main.java

package com;

public class Main {

    public static void main(String[] args) {
        System.out.println(System.getProperty("greeting.language"));
    }
}
Run Code Online (Sandbox Code Playgroud)

的build.gradle

apply plugin: 'java'
apply plugin: 'application'

sourceCompatibility = 1.7
version = '1.0'

mainClassName = "com.Main"

applicationDefaultJvmArgs = ["-Dgreeting.language=en"]
Run Code Online (Sandbox Code Playgroud)

我的问题:如何配置另一个运行任务配置以使用不同的jvm参数,例如:-Dgreeting.language = ch.

我从maven搬到gradle,所以对于这种情况我会使用maven配置文件.gradle中是否有任何与配置文件相对应的结构?

更新1

让我澄清一点任务.我的项目比上面给出的例子复杂得多.我想有一组gradle任务(或者profile /或者在gradle中调用的任何东西),每个任务都应该是自包含的自定义变量集.作为输出,我想有一套gradle任务:

gradle <enableAllFeatures>
gradle <disableFeatureA>
...
Run Code Online (Sandbox Code Playgroud)

这些变量不是JvmArgs的要求.它可以是常量(或者任何可能的gradle)但是需要具有不同的任务,并且每个任务都应该指定它自己的一组变量

更新2

我在网上冲浪,发现非常有趣的话题 - gradle构建变种,但它似乎只适用于android项目.是否可以在java项目中使用构建变体?

gkn*_*ker 2

像这样参数化语言:

applicationDefaultJvmArgs = ["-Dgreeting.language=${language}"]
Run Code Online (Sandbox Code Playgroud)

然后,当您运行 Gradle 时,使用 -P 选项将语言作为参数传递:

$ gradle -Planguage=en tasks 
Run Code Online (Sandbox Code Playgroud)

或者

$ gradle -Planguage=ch tasks
Run Code Online (Sandbox Code Playgroud)

参考

Gradle 优点:使用多个环境或配置文件的属性

类似的 Maven 配置文件 Gradle