【问题标题】:How to pass arguments to gradle from commandline如何从命令行将参数传递给gradle
【发布时间】: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 实际上应该是什么?

【问题讨论】:

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

标签: java


【解决方案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) {}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    相关资源
    最近更新 更多