Gradle 任务 - 将参数传递给 Java 应用程序

2022-08-31 07:45:34

我有一个Java应用程序,它使用自定义gradle任务运行,应用程序在被调用时需要一些参数。这些是:

programName ( string | -f filename | -d key | -h)
Options:
    string         Message to be used.
    -d key         Use default messages, key must be s[hort], m[edium] or l[ong].
    -f filename    Use specified file as input.
    -h             Help dialog.

Gradle 任务如下所示:

task run (type: JavaExec){
    description = "Secure algorythm testing"
    main = 'main.Test'
    classpath = sourceSets.main.runtimeClasspath
}

我试过跑步,但它不起作用。gradle run -h


答案 1

等级 4.9+

gradle run --args='arg1 arg2'

这假设您配置了应用程序插件。您的应如下所示:build.gradlebuild.gradle

plugins {
  // Implicitly applies Java plugin
  id: 'application'
}

application {
  // URI of your main class/application's entry point (required)
  mainClassName = 'org.gradle.sample.Main'
}

预升级 4.9

在以下几点中包含以下内容:build.gradle

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

然后运行:gradle run -PappArgs="['arg1', 'args2']"


答案 2

从 Gradle 4.9 开始,命令行参数可以使用 --args 传递。例如,如果要使用命令行参数启动应用程序,可以使用foo --bar

gradle run --args='foo --bar'

另请参阅 Gradle 应用程序插件

如何升级 Gradle 包装器