Başkalarının da belirttiği gibi, bir jar dosyasının çalıştırılabilir olması için, uygulamanın giriş noktasının Main-Class
bildirim dosyasının özniteliğinde ayarlanması gerekir . Bağımlılık sınıfı dosyaları birlikte konumlandırılmamışsa Class-Path
, bunların bildirim dosyasının girişinde ayarlanması gerekir .
Her türlü eklenti kombinasyonunu denedim ve çalıştırılabilir bir jar oluşturmak gibi basit bir görev için değil, bir şekilde bağımlılıkları da içeriyor. Tüm eklentiler bir şekilde eksik görünüyor, ancak sonunda istediğim gibi edindim. Hiçbir gizemli betik yok, derleme dizinini kirleten bir milyon farklı mini dosya, oldukça temiz bir yapı betik dosyası ve hepsinden önemlisi: jar arşivimde bir milyon yabancı üçüncü taraf sınıf dosyası birleştirilmedi.
Aşağıda, size kolaylık sağlamak için buradan kopyalayıp yapıştırılmıştır .
[Nasıl yapılır] alt dizinde bağımlılık kavanozları içeren bir dağıtım zip dosyası oluşturun /lib
ve tüm bağımlılıkları Class-Path
manifest dosyasındaki girişe ekleyin :
apply plugin: 'java'
apply plugin: 'java-library-distribution'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-lang3:3.3.2'
}
distZip.shouldRunAfter(build)
jar {
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
manifest {
attributes 'Main-Class': 'com.somepackage.MainClass',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
}
}
Burada bir özet olarak barındırılıyor .
Sonuç build/distributions
şurada bulunabilir ve sıkıştırılmış içerikler şu şekilde görünür:
lib / commons-lang3-3.3.2.jar
MyJarFile.jar
İçeriği MyJarFile.jar#META-INF/MANIFEST.mf
:
Manifest-Sürümü: 1.0
Ana-Sınıf: com.somepackage.MainClass
Sınıf-Yol: lib / commons-lang3-3.3.2.jar