SORU
29 Kasım 2012, PERŞEMBE


Maven-gölge-eklenti kullanılır, nedir ve neden java paketleri taşınmaya ister misin?

Maven-gölge-eklenti biri olarak kullanılıyor pom.xml buldum. Bu kullanma nedenini anlamaya çalıştım ve ne yaptığını asla maven-gölge-eklenti daha önce kullandım (ve bir maven n00b değilim). Baktım the maven docs ancak anlayamadığım bu ifade: "Bu eklenti sağlar yeteneği paketi objeyi bir uber-jar, dahil olmak üzere, bağımlılıklarından ve gölge - yani Yeniden Adlandır - paketleri bazı bağımlılıklar." Bu sayfada belgelere acemi dostu görünmüyor.

"Uber kavanoz?" nedir Neden birileri yapmak istesin ki? Bağımlılıkları olan paketleri yeniden adlandırma ne anlamı var? Denedim geçmek örnekler üzerinde maven-gölge-eklenti apache sayfası gibi "içeriğini Seçmek için Uber Kavanoz," ama ben hala anlayamıyorum ne olmak başarılı olan "gölgelendirme."

-Vakalar/açıklayıcı örnekler için herhangi bir işaretçiler (gölgeleme bu durumda gerekli olduğunu neden böyle bir açıklama - problem çözme ile) mutluluk duyacağız. Son olarak, ne zaman kullanmalıyım-gölge-maven plugin?

CEVAP
29 Kasım 2012, PERŞEMBE


Uber KAVANOZ, kısa bir kelime, bir KAVANOZ her şeyi içeren.

Normalde Maven, bağımlılık yönetimi üzerinde dayanır. Bir obje sadece kendi sınıfları/kaynakları içerir. Maven vb çalıştırmak için derleme proje bağımlı olan tüm eserler (Kavanoz vb) bulmak için sorumlu olacaktır.

Uber-kavanoz tüm bağımlılıkları olduğu söyleniyor, ve bağımlılıklar içeriğini ayıklamak ve koyun projesi/sınıflar kaynakları ile bir KAVANOZ içinde, kendisi. Bu uber-kavanoz alarak, küçük Kavanoz ton yerine tek bir büyük KAVANOZ uygulamayı çalıştırmak için ihtiyacınız olacak, çünkü yürütme için kolaydır. Ayrıca bazı durumda dağıtım kolaylığı.

Sadece bir yan not. Bağımlılık çözünürlük Maven özelliği mahvediyor gibi uber-kavanoz kullanarak Maven bağımlılık kaçının. Normalde Maven repo koymak için manuel dağıtım için, ama gerçek dağıtım için son eser için tek veya uber-jar yaratıyoruz.


Sadece sorunun bir parçası açmadım keşfettim : güncelleme: "bağımlılıkları olan paketleri yeniden adlandırma Ne anlamı var?". Sadece bazı kısa bir güncelleme ve umarım diğer yardımcı olacaktır.

Dağıtım kolaylığı için uber-jar oluşturma kullanın gölge eklenti kullanılması durumunda. Ayrıca paket yeniden dahil olan başka bir ortak kullanım örnekleri var.

Belirli bir sürümü (örneğin 1.0) Bar kütüphane bağlıdır Foo kütüphane, geliştiriyorum. Yapamam varsayarak Bar lib diğer sürüm (değiştirmek, ya da diğer teknik sorunlar, vs. çünkü API) kullanır. Eğer ben sadece bildirmek Bar:1.0 Foo'In bağımlılık Maven, mümkün düşmek için bir sorun: Qux projedir bağlı olarak Foo ve de Bar:2.0 (ve bunu kullanamazsınız Bar:1.0 Qux kullanması gereken yeni özellik Bar:2.0). O zaman bir ikilemle karşı karşıya: kullanmalıyım Bar:1.0 (Qux'In kod çalışmaz) veya Bar:2.0 (Foo'In kod çalışmaz).

Amacıyla bu sorunu çözmek için, geliştirici Foo seçmek için kullanın gölge eklenti için yeniden kullanım Bar tüm sınıflar Bar:1.0 kavanoz şimdi gömülü Foo kavanoz ve paket gömülü Bar sınıflar değişti com.bar com.foo.bar. Böyle yaparak, Qux can güvenli bir şekilde bağlı Bar:2.0 çünkü Foo artık bağlı Bar, ve bunu kullanarak kendi kopyasını "değişmiş" Bar bulunan bir paket.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 30GB

    30GB

    14 AĞUSTOS 2006
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • Professor Messer

    Professor Me

    27 NİSAN 2007