Maven belgelerini okuyorum ve 'uber-jar' adıyla karşılaştım.
Bir uber-jar ne anlama geliyor ve özellikleri / avantajları nelerdir?
Maven belgelerini okuyorum ve 'uber-jar' adıyla karşılaştım.
Bir uber-jar ne anlama geliyor ve özellikleri / avantajları nelerdir?
Yanıtlar:
Über
Almanca kelimedir above
veya over
(aslında İngilizce ile uyumludur over
).
Dolayısıyla, bu bağlamda, bir uber-kavanozu "aşırı kavanoz", basit bir JAR itibaren bir seviye yukarı (a) , paketinizi hem içerdiği biri olarak tanımlanır ve tek JAR dosyasında tüm bağımlılıklarını. Adın, hepsi "normalin ötesinde" benzer anlamları olan ultrageek, süpermen, hiperuzay ve meta verilerle aynı ahırdan geldiği düşünülebilir.
Avantajı, uber-kavanoz dağıtmak ve aslında uber-kavanoz gibi hedefe yüklü olan tüm olup olmadığına bağımlılıkları de umurumda değil olmasıdır sahip hiçbir bağımlılıkları.
Kendi eşyalarınızın uber-jar içindeki tüm bağımlılıkları da o uber-jar içindedir. Tüm bu bağımlılıklar gibi. Ve bunun gibi.
(a) Muhtemelen bir JAR'ın bir Java geliştiricisine ne olduğunu açıklamak zorunda olmamalıyım ama bütünlük için dahil edeceğim. Bir Java arşivi, temel olarak ilişkili meta veriler ve kaynaklarla birlikte genellikle birkaç Java sınıfı dosyası içeren tek bir dosyadır.
über
ve over
aynı zamanda bu kelime çiftleri görülebilir Eski Germen içinde sistematik vokal kayması sonucu: geben/give
, leben/live
, haben/have
, heben/heave
ve daha birçok.
ubar kavanozu aynı zamanda yağ kavanozu, yani bağımlılığı olan kavanoz olarak da bilinir .
Bir uber kavanozu oluşturmak için üç yaygın yöntem vardır:
Paxdiablo tanımı gerçekten çok iyi.
Buna ek olarak, gerçekten bir yazılım dağıtmak istiyorsanız ve müşterinin bağımlılıkları kendileri indirmesini istemiyorsanız, lütfen bir uber-jar teslim etmenin bazen oldukça ilginç olduğunu düşünün. Geri çekme olarak, kendi politikaları bazı kütüphanelerin kullanımına izin vermiyorsa veya bazı ekstra bileşenleri (slf4j, sistem uyumlu kütüphaneler, kemer uzmanlık kütüphaneleri, ...) bağlamak zorundaysa, bu muhtemelen onlar için zorlukları artıracaktır. .
Bunu yapabilirsiniz:
Daha temiz bir çözüm, üç kütüphaneyi ayrı ayrı sağlamaktır; maven-shade-plugin bunun için önceden yapılandırılmış tanımlayıcıya sahiptir. Bunu yapmak daha karmaşık değildir (maven ve eklentisi ile).
Son olarak, gerçekten iyi bir çözüm bir OSGI Paketi kullanmaktır. Bu konuda birçok iyi öğretici var :)
Daha fazla yapılandırma için lütfen şu konuları okuyun:
Sıska - SADECE tam olarak kod düzenleyicinize yazdığınız bitleri ve başka hiçbir şeyi içermez.
İnce - Yukarıdaki PLUS uygulamasının uygulamanızın doğrudan bağımlılıklarını içerir (db sürücüleri, yardımcı program kütüphaneleri, vb.).
Hollow - İnce'nin tersi - Yalnızca uygulamanızı çalıştırmak için gereken bitleri içerir, ancak uygulamanın kendisini İÇERMEZ. Temel olarak, daha sonra uygulamanızı geleneksel Java EE uygulama sunucularıyla aynı stilde ancak önemli farklarla dağıtabileceğiniz, önceden paketlenmiş bir “uygulama sunucusu”.
Fat / Uber - Kelimenin tam anlamıyla kendinize PLUS yazmak için biraz içerir PLUS uygulamanızın doğrudan bağımlılıkları PLUS uygulamanızı "kendi başına" çalıştırmak için gereken bitleri.
Kaynak: Dzone'dan Makale
Yayınlanma tarihi: https://stackoverflow.com/a/57592130/9470346