2014-09-10 86 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) {} 

} 
相關問題