2014-09-10 197 views
2

我尝试从命令行向gradle传递参数。如何从命令行将参数传递给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'. 

我的问题是,我应该提供主?任何java文件包的名称?任何特定的路径?实际上应该是什么sourceSet?

+0

BTW我下面是这个:http://stackoverflow.com/questions/21358466/gradle-to-execute-java-class-without-modifying-build-gradle如果它的工作原因为什么不适合我? – user3409650 2014-09-10 09:06:18

+0

如果您的项目结构遵循Gradle标准,那么您不需要定义sourceSet {... main {..} test {..} .. blahTest {..} ..}部分。如果您的项目没有遵循默认结构,那么您必须在build.gradle文件中定义sourceSets部分。你可以在下面的链接中看到一个build.gradle文件来获得一个想法,你还必须应用插件:'java'或者其他:http://stackoverflow.com/questions/18879250/jacoco-unit-and-integration- test-coverage-individual-and-overall – 2014-09-11 15:19:40

+0

它为他工作的一个原因可能是,如果他的结构匹配sourceSets的默认Gradle项目结构(在这种情况下,您不需要为main,test等定义sourceSets部分)。其他可以是,如果sourceSet节在全局Gradle级别文件中定义,即在$ GRADLE_HOME/init.d/common.gradle文件中的任何.gradle文件,则不需要在任何项目的build.gradle中指定sourceSet节它使用Gradle。 - 或者他只是没有在他的文章中展示这件作品(假设他的帖子中他的问题的范围并不重要)。 – 2014-09-11 15:23:28

回答

0

你最小的build.gradle文件应该是这样的:

apply plugin: 'java' 

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

而你需要放在src /主/ JAVA/Hello.java这样的java类:

public class Hello { 

    public static void main(String[] a) {} 

}