我有一个运行自定义gradle任务的Java应用程序,该应用程序在调用时需要一些参数。这些是:
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
,它不工作。
8条答案
按热度按时间koaltpgm1#
Gradle 4.9+
这假设您的
build.gradle
配置了Application plugin。你的build.gradle
应该看起来像这样:预科4.9
在
build.gradle
中包含以下内容:然后运行:
gradle run -PappArgs="['arg1', 'args2']"
lzfw57am2#
从Gradle 4.9开始,命令行参数可以通过--args传递。例如,如果要使用命令行参数
foo --bar
启动应用程序,可以使用gradle run --args='foo --bar'
See Also Gradle Application Plugin
如何升级Gradle Package 器
relj7zay3#
如果你想一直使用同一组参数,下面就是你所需要的。
gkl3eglg4#
抱歉这么晚才接电话。
我想了一个类似于@xlm的答案:
像这样呼唤:
ttcibm8c5#
您可以在Problems passing system properties and parameters when running Java class via Gradle中找到解决方案。两者都涉及
args
属性的使用此外,您应该阅读Gradle文档中解释的使用
-D
或-P
传递之间的差异ldioqlga6#
当然,以上的答案都可以,但我仍然想使用类似于
这是不可能的,但如果我们可以:
如果你认为它更优雅,那么你可以这样做,诀窍是在gradle做之前处理命令行并修改它,这可以通过使用init脚本来完成
下面的init脚本:
1.处理命令行并删除-和“-”后面的所有其他参数
1.将属性'appArgs'添加到gradle.ext
因此,在运行任务(或JavaExec、Exec)中,您可以:
初始化脚本是:
局限性:
1.我被迫用“-”而不是“-”
1.您必须添加一些全局初始化脚本
如果你不喜欢全局初始化脚本,可以在命令行中指定
或者更好地为shell添加一个别名:
zbwhf8kr7#
您需要使用项目属性将它们作为
args
传递给任务,例如:添加到您的任务定义中(请参阅配置文件)
然后你可以运行它:
dldeef678#
使用KotlinDSL: