向gradle命令任务传递命令行参数的不同方法

4,606 阅读1分钟

在本教程中,你学到了如何从gradle构建脚本中传递命令行参数。

  • 使用-P选项的项目属性
  • 使用-D选项的java系统属性
  • 使用应用程序插件的args选项

如何用gradle脚本传递项目命令行属性

在这里,项目属性是通过gradle命令的-P 选项传递的。

在build.gradle中,任务运行被配置为读取参数-project.hasProperty

task run {
    if ( project.hasProperty("argsarray") ) {
        args Eval.me(argsarray)
    }
}

和java类来读取参数

public class Test {
public static void main(String[] args) throws Exception {
           for (String item : args) {
            System.out.println("[" + item + "]");
        }
}

让我们看看如何从gradle命令行传递参数。

gradle run  -Pargsarray="['one','two']"

如何使用系统环境属性传递命令行参数

像java命令行一样,Gradle命令也接受带有-D选项的参数 这里有一个命令可以将自定义属性传递到命令行。

gradle -Dtest.hostname=localhost

在build.gradle中,你可以在ext 块中进行配置。ext块保存所有用户定义的与项目、系统和任务有关的属性参数。

使用System.getProperty读取参数。

ext {
   hostname = System.getProperty("test.hostname", "localhost");
}

这样就可以传递所有的参数和值

你可以在gradle脚本的任何地方使用project.ext.hostname 属性来读取值。

如果你想从gradle脚本中传递参数到测试用例,首先,读取属性并传播到测试任务。

test {
       systemProperty "test.hostname", "localhost"
}

以下是将所有系统属性传递给gradle test 任务

test {
               systemProperties(System.getProperties())

首先配置,应用程序和java插件在build.gradle

apply plugin: "java"
apply plugin: "application"

application {
    mainClassName = com.ch.Test
}

这里有一个java类

package com.ch;
public class Test {
    public static void main(String[] args) {
        System.out.println(args);
    }
}

在命令行中,我们可以使用以下命令

在windows下,argumesn值用双引号括起来

gradlew run --args="welcome to java class"

在Linux中,我们可以使用单引号

gradlew run -args='welcome to java class'