2012-12-03 91 views
7

下面是問題:我想執行一些java類與一些依賴關係,比如運行時配置。如何才能做到這一點?Gradle:如何讓JavaExec任務使用配置類路徑?

task runJava(type: JavaExec, dependsOn:[classes]) { 
     main = 'mypackage.MyClass' 
     classpath = //what should I write here to provide classes from runtime configuration? 
} 

回答

16

你可能會想要使用Source sets的運行時類路徑,其中包括了compiled classes of your project as well as all the runtime dependencies

task runJava(type: JavaExec, dependsOn:[classes]) { 
    main = 'mypackage.MyClass' 
    classpath = sourceSets.main.runtimeClasspath 
} 

如果你想得你可以做這樣的事情的具體結構的路徑:configurations.getByName('runtime').asPath或更短configurations.runtime.asPath

+2

值得注意的是,調用'asPath'將解析配置,因此您可能需要小心不要在配置階段無意中解決配置 – Matt

+2

在Android Studio中使用gradle時,沒有sourceSets.main - 任何人都有一個想法,你需要在Android Studio的Gradle版本中使用什麼?目前爲止我發現的只有android.sourceSets.main,但它沒有runtimeClasspath,我甚至不確定它是正確的。 – AgentKnopf

+0

我收到錯誤:(38,1)發生了一個評估根項目'MyProject'的問題。 >無法獲取類型爲org.gradle.api.tasks.JavaExec的任務':runApp'的未知屬性'sourceSets'。 – Zon

相關問題