Uber kavanoz nedir?


Yanıtlar:


357

ÜberAlmanca kelimedir aboveveya 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.


Garip ... Ben bir Almanım ve tabii ki "über" kelimesini ve anlamını biliyorum. Ama neden burada Maven bağlamında kullanılıyor? Bu durumda, bir veya daha fazla şeyin bir araya getirildiği ve üretilen kavanoz aracılığıyla erişilebilir olduğu anlamına gelir. Unfortunateley bu ipucu benim benim maven sorunu sovle vermedi ;-)
Bjoern

7
BTW, überve overaynı zamanda bu kelime çiftleri görülebilir Eski Germen içinde sistematik vokal kayması sonucu: geben/give, leben/live, haben/have, heben/heaveve daha birçok.
biziclop

Çok akıllı açıklama: Örnek bağlantı
Veniamin

İnsanları eğitmeye çalışırken ne kadar keder aldığım göz önüne alındığında , sadece bazılarının şikayet etmeye devam ettiği şeyleri kaldırmaya karar verdim. Hala uber'yi Alman dili bağlamında tanımlıyorum ama (biraz ayrıntılı) tarih dersi artık gitti :-)
paxdiablo

58

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:

  1. Gölgesiz: Tüm JAR dosyalarını paketinden çıkarın, ardından tek bir JAR olarak yeniden paketleyin. Java'nın varsayılan sınıf yükleyicisiyle çalışır. Araçlar -montaj-eklentisi
  2. Gölgeli: Gölgesizle aynı, ancak tüm bağımlılıkların tüm paketlerini yeniden adlandırın (yani, "gölgelendirin") . Java'nın varsayılan sınıf yükleyicisiyle çalışır. Bazı (hepsi değil) bağımlılık sürüm çakışmalarını önler. Araçlar -gölge-eklentisi
  3. JAR of JAR: Son JAR dosyası, içine gömülü olan diğer JAR dosyalarını içerir. Bağımlılık sürüm çakışmalarını önler. Tüm kaynak dosyaları korunur. Araçlar: Eclipse JAR Dosya Aktarıcı

daha fazlası için


57

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:


4

Bağımsız, yürütülebilir bir Java arşivi. WildFly Swarm uberjars durumunda, uygulamanızı içeren tek bir .jar dosyası, onu desteklemek için gereken WildFly bölümleri, dahili bir Maven bağımlılık deposu ve hepsini önyüklemek için bir şim. bunu gör


0

Farklı isimler sadece java uygulamalarını paketleme yollarıdır.

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

JAR tiplerinin görsel gösterimi

Yayınlanma tarihi: https://stackoverflow.com/a/57592130/9470346

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.