私はgradleベースのスタンドアロンプロジェクトを持っています。 Gradleビルドを実行すると、jarはbuild/libsの下に生成されます。コマンドラインからこの実行可能jarを実行するにはどうすればよいですか?私は試した : Java -cp build/libs/foo.jar full.package.classname
しかし、インポートされたクラスに対してnoClassFoundExceptionが発生します。依存するjarをクラスパスの一部として含めるにはどうすればよいですか?
質問にはgradleタグが付いているので、gradleビルドからjarを実行したいと思います。また、gradleビルドにJava
プラグインを使用することも想定しています。
あなたのgradleに次の行を追加してください:
task runFinalJar(type: JavaExec) {
classpath = files('build/libs/foo.jar')
classpath += sourceSets.main.runtimeClasspath
main = full.package.classname
}
これで、タスクをビルドプロセスに含めることができます。
build.dependsOn.add("runFinalJar")
または、コマンドラインから実行します。
gradle build runFinalJar
[〜#〜] update [〜#〜] Peterが提案したようにアプリケーションプラグインを使用する方がきれいです
アプリケーションプラグイン を使用して、コード、その依存関係、起動スクリプトを含むアーカイブを作成するか、実行可能なファットJARを作成します。後者は素朴な方法で行うべきではありませんが、 gradle-one-jar (または同様の)プラグインを使用します。
Jarを実行する簡単なタスクを追加する
task runJar(type: JavaExec) {
main = "-jar";
args jar.archivePath
}
答えは実際の問題を超えていると思います。問題は、gradleがビルドするJARを実行する方法です。
質問者は、彼らが試したと述べていますJava -cp build/libs/foo.jar full.package.classname
無駄に。
正しい構文はJava -jar build/libs/foo.jar
、またはJARがそこにある場合、明らかにJava -jar foo.jar
通常どおり。
IMHO、わかりやすくするために質問を編集する必要があります。
私は初心者なので、ここでの説明は単純化されます。俺の build.gradle
ファイルには1行しか含まれていません:apply plugin: 'Java'
。 hello world
Javaのコードsrc/main/Java/org/dx/test/App.Java
。コマンドシェルから、次のように入力しました:gradle build
。そして、このjarファイルが魔法のように作成されているのを見ました。
build/libs/helloworld.jar
上記の回答はすべて機能しませんでした。私のために働いたのは:
Java -cp build/libs/helloworld.jar org.dx.test.App
今、私はgradleが魔術でいっぱいであることを知っているので、私の状況があなたの状況を完全に反映していないかもしれないと確信しています。実行されたアクションは次のとおりです。
build.gradle
ファイルApp.Java
医師の所定のフォルダの場所gradle build