2010-06-17 102 views
7

我想讓一個任務在gradle中運行我的Jar文件。gradle runJar任務?

我想出了以下內容:

task runJar(dependsOn:[jar]){ 
    ant.java(jar:,fork:true) 
} 

但是,我無法找到路徑的jar文件。任何幫助非常感謝。謝謝!

Misha

編輯:好吧,這很奇怪。這個任務在編譯之前運行等。

編輯:修正。關鍵是在doLast {}符號,或者,在速記

task runJar(dependsOn:"jar")<<{ 
    ant.java(jar:"${libsDir}${File.separator}${archivesBaseName}.jar",fork:true) 
} 

米莎

回答

1

到目前爲止,我最好的解決辦法:

task runJar(dependsOn:[jar]){ 
    ant.java(jar:"${libsDir}${File.separator}${archivesBaseName}.jar",fork:true) 
} 

謝謝!

Misha

+1

嗨!我已經嘗試了你的解決方案,但是我沒有從jar中得到輸出 - 我只能得到一個Java Result:1信息,儘管我在我的main方法中有'System.out'的問題...我怎樣才能得到輸出? – emesx 2012-03-17 09:33:38

+0

我需要提供**參數**。 – 2016-11-02 21:47:37

2

您應該能夠使用jar.archivePath變量;

task runJar(dependsOn:[jar]){ 
    ant.java(jar: jar.archivePath ,fork:true) 
} 
+0

如何在這裏提供**參數**? – 2016-11-02 21:47:24

+1

示例:http://stackoverflow.com/questions/10033853/how-to-pass-arguments-to-ant-java-method-in-groovy – TheKaptain 2016-11-15 20:49:49

9

Koppor的答案完美。

隨着的src/main/java的一個Main.java,我的build.gradle文件看起來像

apply plugin: 'java' 
apply plugin: 'application' 

mainClassName = "Main" 

運行它給:

gradle run     

:compileJava 
:processResources UP-TO-DATE 
:classes 
:run 
[Main.java's output]