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

标签 java gradle

这是我的输入:

主.java

package com;

public class Main {

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

构建.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 项目中使用构建变体?

最佳答案

像这样参数化语言:

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

关于java - 具有不同属性的 Gradle 运行配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071613/

相关文章:

cordova - 多个库,软件包名称为 'com.google.android.gms'(仅8.1)和Cordova

java - 了解 Akka 容错

java - 将 JLabel 属性添加到匿名变量类型?

gradle - 如何在gradle中针对本地文件进行编译?

gradle - flyway + gradle + spring boot 配置

java - 将任何文件类型解析为 XML

java - 如何确定当前选定的选项卡?

java - 仅当 TYPE_SCROLL_INSENSITIVE、CONCUR_READ_ONLY 时结果集不正确

java - 遍历列表并返回匹配的键

android - 带有数据绑定(bind)的 Gradle Plugin 3.2.0,无法解析包名