2012-12-03 9 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

おそらくcompiled classes of your project as well as all the runtime dependenciesが含まれてあなたのSource setsの実行時のクラスパスを使用したいと思うでしょう。

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スタジオでgradleを使用する場合、sourceSets.mainはありません誰かがAndroid StudioのGradleバージョンのケースで使用する必要があるアイデアを持っていますか?これまで見つかったのはandroid.sourceSets.mainだけですが、runtimeClasspathはありませんでした。私はそれが正しいことさえ確信していません。 – AgentKnopf

+0

エラー:(38、1)ルートプロジェクト 'MyProject'の評価中に問題が発生しました。 >タスク ':runApp'のタイプがorg.gradle.api.tasks.JavaExecの不明なプロパティ 'sourceSets'を取得できませんでした。 – Zon

関連する問題