私はGradleを使用しています。通常私はFAT瓶を作ります。問題はありませんでしたが、現時点では、NON-FATジャーを作る必要もあります。 私は次のような-cp
オプションを使用して、すべての依存元のライブラリと実行瓶除外する意味:ここでオンデマンドでGradleでNON-FAT jarを作成する
(java -jar myjar.jar
が同じものであり、そのdepended.jar
が含まれ、FATジャーで)
java -cp "/sample1/lib/myjar.jar:/sample2/lib/depended.jar" com.example.main.Runner
をされます私のbuild.gradle
。
apply plugin: 'java'
apply plugin: 'application'
jar.baseName = 'myjar'
version = ''
def mainClass = 'com.example.main.Runner'
mainClassName = mainClass
def defaultEncoding = 'UTF-8'
repositories {
flatDir dirs: "${projectDir}/libs"
}
dependencies {
compile ':commons-chain:1.2'
compile ':commons-io:2.4'
testCompile ':junit:4.12'
testCompile ':hamcrest-core:1.3'
}
jar {
manifest {
attributes 'Implementation-Version': version,
'Main-Class': mainClass
}
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }}
}
通常のFAT jarの作成では、このままにしておきたいと思います。 だから、私は、次のようなタスクを追加しようとした:
TRY#1
task makeSlimJar {
jar.baseName = 'myjar.slim'
jar {
manifest {
// remove main class
attributes 'Implementation-Version': version
}
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }}
}
TRY#2
task makeSlimJar {
jar.baseName = 'myjar.slim'
jar {
manifest {
// remove main class
attributes 'Implementation-Version': version
}
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }}
tasks.Jar.execute()
}
TRY#3
task makeSlimJar {
jar.baseName = 'myjar.slim'
jar {
manifest {
// remove main class
attributes 'Implementation-Version': version
}
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }}
dependsOn Jar
}
それを添付した後私はgradle makeSlimJar
を実行しました。 上記のすべての試行は失敗しました(プログラムでは成功しました)、ちょうど名前がmyjar.slim.jar
のFATジャーを作成しました。
同じbuild.gradle
ファイルにFATとNON-FAT jarを一緒に使用する方法はありますか? ...または私は何か間違っていますか?
NON-FAT jarのapply plugin: 'application'
を削除することが私の最後の手段だと考えています。
可能であればお手伝いください。
おかげで、
ありがとうございます。 あなたの提案によると、私は 'jar {}'セクションを削除し、 'fatjar'タスクを追加しました。 これは完璧に動作します!どうもありがとうございます。 – tkhm