Catatan: Jika Anda adalah aplikasi boot-spring, baca akhir jawaban
Tambahkan plugin berikut ke Anda pom.xml
Versi terbaru dapat ditemukan di
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>CHOOSE LATEST VERSION HERE</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
Setelah mengonfigurasi plugin ini, menjalankan mvn package
akan menghasilkan dua botol: satu hanya berisi kelas proyek, dan botol lemak kedua dengan semua dependensi dengan akhiran "-jar-with-dependencies".
jika Anda ingin classpath
setup yang benar saat runtime maka tambahkan juga plugin berikut
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Untuk aplikasi boot musim semi gunakan hanya mengikuti plugin (pilih versi yang sesuai)
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>${start-class}</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
Anda dapat menggunakan maven-shade-plugin .
Setelah mengonfigurasi plugin shade di build Anda, perintah
mvn package
akan membuat satu jar dengan semua dependensi digabungkan ke dalamnya.sumber
Mungkin Anda ingin
maven-shade-plugin
, menggabungkan dependensi, meminimalkan kode yang tidak digunakan, dan menyembunyikan dependensi eksternal untuk menghindari konflik.Referensi:
sumber
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
, hapus saja<minimizeJar>true</minimizeJar>
.sebenarnya, menambahkan
deklarasi ke maven-jar-plugin tidak menambahkan entri kelas utama ke file manifes untuk saya. Saya harus menambahkannya ke maven-assembly-plugin untuk mendapatkannya di manifes
sumber
Anda dapat menggunakan plugin onejar-maven untuk pengemasan. Pada dasarnya, ini merakit proyek Anda dan dependensinya dalam satu jar, termasuk tidak hanya file jar proyek Anda, tetapi juga semua dependensi eksternal sebagai "jar of jars", mis.
Catatan 1: Opsi konfigurasi tersedia di halaman beranda proyek .
Catatan 2: Karena satu dan lain hal, proyek onejar-maven-plugin tidak dipublikasikan di Maven Central. Namun jolira.com melacak proyek asli dan menerbitkannya dengan groupId
com.jolira
.sumber
Alternatifnya adalah dengan menggunakan plugin maven shade untuk membuat file
uber-jar
.sumber