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

时间:2015-01-21 16:01:29

标签: java gradle

以下是我的意见:

Main.java

package com;

public class Main {

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

的build.gradle

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

sourceCompatibility = 1.7
version = '1.0'

mainClassName = "com.Main"

applicationDefaultJvmArgs = ["-Dgreeting.language=en"]

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

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

更新1

让我稍微澄清一项任务。我的项目比上面给出的例子复杂得多。我想有一组gradle任务(或者配置文件/或者它在gradle中调用的任何内容),每个任务都应该是自包含的自定义变量集。作为输出,我想有一套gradle任务:

gradle <enableAllFeatures>
gradle <disableFeatureA>
...

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

更新2

我在上网时发现了一个非常有趣的主题 - gradle build variants ,但它似乎只适用于android项目。是否可以在java项目中使用构建变体?

1 个答案:

答案 0 :(得分:2)

像这样参数化语言:

applicationDefaultJvmArgs = ["-Dgreeting.language=${language}"]

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

$ gradle -Planguage=en tasks 

$ gradle -Planguage=ch tasks

<强>参考

Gradle Goodness: Using Properties for Multiple Environments or Profiles

Similar Maven profile Gradle