如何在gradle中将命令行参数传递给主类?

时间:2017-05-27 12:41:48

标签: java gradle

我正在创建简单的Java类,我想使用gradle创建开箱即用的启动器。

所以我希望能够通过gradle运行Java程序:

gradlew clean run These are my command line arguments其中These are my command line arguments直接传递给我的public static void main(String... args)方法。

我正在使用apply plugin: "application"给我run任务。但是,当我运行这个'按原样#39;我有:

* What went wrong: Task 'These' not found in root project 'question1'. Some candidates are: 'test'.

1 个答案:

答案 0 :(得分:8)

Gradle将每个不以连字符(-)开头的参数解释为任务名称,以定义在构建期间将执行哪些任务。由于名称为These的任务不存在,因此构建失败。

您正在使用Gradle应用程序插件,正如您所说,它提供了run任务。 docs显示run任务属于JavaExec类型。因此,要应用您的参数,请通过run

将它们添加到args任务中
run {
    args 'These are my command line arguments'
}

要修改每个构建的参数而不更改build.gradle文件,只需使用项目属性:

run {
    args findProperty('runArgs')
}

并致电gradle clean run -PrunArgs='These are my command line arguments'