Java veya Spring Projeniz için gerekli tüm Bağımlılıkları içeren yalnızca 1 Yürütülebilir kavanoz oluşturmak için "maven-shade-plugin" kullanın.

Yayınlanan: 2016-11-16

maven-gölge-eklenti-nasıl-oluşturulur-javaspring-tabanlı-yürütülebilir-kavanoz-gerekli tüm bağımlılıklar

Sadece içindeki tüm bağımlılıkları içeren bir Crunchify.jar dosyası oluşturun

Geçen hafta, yürütülebilir Jar Projenizin tamamını oluşturmak için maven-resources-plugin , maven-dependency-plugin & maven-jar-plugin nasıl kullanılacağına dair bir eğitim yazdım. Sonuç olarak, gerekli tüm dosyaları /target/Crunchify klasörüne oluşturur / kopyalar.

Before: maven kaynağı, maven bağımlılığı, maven-jar eklentilerini kullanma:

maven-resources-maven-dependency-maven-jar-plugin-to-build-java-project

After: maven gölge eklentisini kullanma:

Java-veya-bahar-projeniz için-tüm-gerekli-bağımlılıklar-özellikler-ve-kaynaklar-dosyası-ile-sadece-1-yürütülebilir-jar-oluştur

Yukarıdaki sonuca nasıl ulaşılacağına başlayalım:

Burada gördüğünüz gibi Java Project'teki her şeyi just one file topladık ve Crunchify.jar adını verdik (tüm dosyalar içinde).

Birkaç gün önce, Maven kullanarak runnable binary distribution of a standalone Java application oluşturmak istediğim için bunu nasıl başaracağım hakkında hiçbir fikrim yoktu. Başka bir deyişle:

  1. Maven ile yay tabanlı yürütülebilir kavanoz nasıl oluşturulur?
  2. Java + Spring + Diğer bağımlılıklar için Maven ile Çalıştırılabilir İkili Dağıtım Oluşturma
  3. Maven ile Java + Bahar Projeleri Nasıl İnşa Edilir?

Normalde Maven'de bağımlılık yönetimine güveniriz. Bir yapı sadece kendi sınıflarını/kaynaklarını içerir. Maven, projenin bağımlı olduğu tüm yapıtları (JAR'lar vb.) Derlerken ve çalıştırırken vb. bulmaktan sorumlu olacaktır.

maven -shade- plugin yardımıyla bu hedefi başarabildim . Yapıyı bağımlılıkları da dahil olmak üzere bir uber-jar (One major file jar) içinde paketleme ve bazı bağımlılıkların paketlerini gölgeleme – yani yeniden adlandırma – yeteneği sağlar.

Projemde pek çok başka bağımlılığım var, örn. Spring Framework, JSON, 3. Parti araçlar, vb. Aşağıda sadece örnek bir proje var ama üretim .jar ~5.2MB big büyüklüğünde çıktı.

Bir uber-jar , tüm bağımlılıkları alan ve bağımlılıkların içeriğini çıkaran ve onu projenin sınıfları/kaynaklarıyla birlikte tek bir JAR'a koyan bir şeydir. Böyle bir uber-jar'a sahip olarak, easy for execution , çünkü uygulamanızı çalıştırmak için tonlarca küçük JAR yerine yalnızca bir büyük JAR'a ihtiyacınız olacaktır. Ayrıca bazı durumlarda dağıtımı kolaylaştırır.

Bunu başarmak için pom.xml dosyanızı güncellemeniz gerekiyor.

Aşama 1

Tam pom.xml dosyasına bir göz atın. Temelde <build> etiketi ile ilgileneceksiniz.

Burada gördüğünüz gibi pom.xml dosyasında Resource Transformers kullanıyorum. Birkaç yapıdan gelen classes/resources tek bir Crunchify JAR , çakışma olmadığı sürece basittir. Aksi takdirde, birkaç JAR'dan gelen kaynakları birleştirmek için bir tür mantık gereklidir. Kaynak transformatörlerinin devreye girdiği yer burasıdır.

Adım 2

pom.xml dosyanıza maven-shade-plugin ekledikten sonra projenizi oluşturmak için aşağıdaki komutu kullanın.

Ve all dependencies mentioned in pom.xml file oluşturulmuş bir Crunchify.jar (uber-jar) dosyası görmelisiniz.

Aşama 3

Projenizin hedef klasörüne gidin ve Crunchify.jar dosyasının oluşturulduğunu göreceksiniz. Sadece komutu kullanın

$bash> java -jar Crunchify.jar projenizi yürütmek için.

Ekleyeceğiniz bir şey var mı? Aşağıdaki yorum bölümüne ekleyin. Keyfini çıkarın, İyi günler ve Mutlu Kodlamalar.