如何从命令行将参数传递给gradle

Posted

技术标签:

【中文标题】如何从命令行将参数传递给gradle【英文标题】:How to pass arguments to gradle from commandline 【发布时间】:2014-09-10 08:58:57 【问题描述】:

我尝试将参数从命令行传递给 gradle。

我的 build.gradle 是:

task execute(type:JavaExec) 
   main = mainClass
   classpath = sourceSets.main.output

当我这样做时:

gradle -PmainClass=Hello execute

我明白了:

FAILURE: Build failed with an exception.

* Where:
Build file '/home/example2/build.gradle' line: 7

* What went wrong:
A problem occurred evaluating root project 'example2'.
> Could not find property 'sourceSets' on task ':execute'.

我的问题是我应该为 main 提供什么?任何java文件包的名称?有什么具体的路径吗? sourceSet 实际上应该是什么?

【问题讨论】:

顺便说一句,我正在关注这个:***.com/questions/21358466/… 如果它在那里工作,为什么不适合我? 如果你的项目结构遵循 Gradle 标准,那么你不需要定义 sourceSet ...main .. test .. .. blahTest .. .. 部分.如果您的项目不遵循默认结构,那么您必须在 build.gradle 文件中定义 sourceSets 部分。您可以在以下链接中看到一个 build.gradle 文件来了解一下,您还必须应用插件:'java' 等:***.com/questions/18879250/… 对他有用的一个原因可能是,如果他的结构与 sourceSets 的默认 Gradle 项目结构相匹配(在这种情况下,您不需要为 main、test 等定义 sourceSets 部分)。其他可以是,如果 sourceSet 部分是在全局 Gradle 级别文件中定义的,即 $GRADLE_HOME/init.d/common.gradle 文件中的任何 .gradle 文件,那么您不需要在任何项目的 build.gradle 中指定 sourceSet 部分它使用那个 Gradle。 - 或者他只是没有在他的帖子中展示那篇文章(假设这对他在帖子中的问题范围并不重要)。 【参考方案1】:

您的最小 build.gradle 文件应如下所示:

apply plugin: 'java'

task execute(type:JavaExec) 
   main = mainClass
   classpath = sourceSets.main.output

您需要一个位于 src/main/java/Hello.java 中的 java 类,如下所示:

public class Hello 

    public static void main(String[] a) 


【讨论】:

以上是关于如何从命令行将参数传递给gradle的主要内容,如果未能解决你的问题,请参考以下文章

从命令行将参数传递给可执行文件[重复]

如何将参数/参数传递给通过Grunt调用的mocha测试

如何在 build.gradle 中将参数传递给 Gradle 任务

有没有办法通过命令行将 JVM 参数传递给 Maven? [复制]

试图了解如何将参数从 gradle 传递到我的 shell 脚本?

如何从命令行将主机名传递给gen_tcp