ดังที่คนอื่น ๆ ได้จดบันทึกไว้เพื่อให้ไฟล์ jar สามารถเรียกใช้งานได้จุดเข้าใช้งานของแอปพลิเคชันจะต้องตั้งค่าในMain-Class
แอตทริบิวต์ของไฟล์รายการ หากไฟล์คลาสการพึ่งพาไม่ได้จัดวางดังนั้นจำเป็นต้องตั้งค่าไว้ในClass-Path
รายการของไฟล์รายการ
ฉันได้ลองชุดค่าผสมทุกชนิดแล้วและสิ่งที่ไม่เกี่ยวกับงานง่าย ๆ ในการสร้าง jar ที่ใช้งานได้และอย่างใดอย่างหนึ่งรวมถึงการพึ่งพา ปลั๊กอินทั้งหมดดูเหมือนจะขาดไปไม่ทางใดก็ทางหนึ่ง แต่ในที่สุดฉันก็ได้มันมาเหมือนที่ฉันต้องการ ไม่มีสคริปต์ลึกลับไม่ใช่ไฟล์ขนาดเล็กหลายล้านไฟล์ที่สร้างมลภาวะต่อการสร้างไฟล์สคริปต์สร้างที่ค่อนข้างสะอาดและเหนือสิ่งอื่นใดไม่ใช่ไฟล์ระดับบุคคลที่สามจากต่างประเทศที่รวมอยู่ในที่เก็บถาวรของฉัน
ต่อไปนี้เป็นสำเนาการวางจากที่นี่เพื่อความสะดวกของคุณ ..
[วิธีการ] สร้างไฟล์ zip การกระจายพร้อมไหการพึ่งพาในไดเรกทอรีย่อย/lib
และเพิ่มการอ้างอิงทั้งหมดไปยังClass-Path
รายการในไฟล์รายการ:
apply plugin: 'java'
apply plugin: 'java-library-distribution'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.commons:commons-lang3:3.3.2'
}
// Task "distZip" added by plugin "java-library-distribution":
distZip.shouldRunAfter(build)
jar {
// Keep jar clean:
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(' ')
}
// How-to add class path:
// /programming/22659463/add-classpath-in-manifest-using-gradle
// https://gist.github.com/simon04/6865179
}
Hosted เป็นส่วนสำคัญที่นี่
สามารถพบผลลัพธ์ได้build/distributions
และเนื้อหาที่คลายซิปจะมีลักษณะดังนี้:
lib / commons-lang3-3.3.2.jar
MyJarFile.jar
เนื้อหาของMyJarFile.jar#META-INF/MANIFEST.mf
:
Manifest-Version: 1.0
Main-Class: com.somepackage.MainClass
Class-Path: lib / commons-lang3-3.3.2.jar