2011-02-26 10 views
8

Maven yerel deposuna yüklediğim ve yerel olarak kullanılmakta olan ancak dağıtım sunucusunda mevcut olmayan bir bağımlılığım var. Bu bağımlılığı Class.forName(...) kullanarak kullanıyorum, bu nedenle dağıtım sunucusundaki sınıf yolundan kaçırılırsa sorun olmaz.Maven'in çözemediği takdirde bağımlılığı görmezden gelmesine nasıl bahsedilir?

Maven’e bunu çözemediğinde bağımlılığı görmezden gelmesinin bir yolu var mı?

Ben <scope> veya <optional> bu sorunu çözmek anlamına görünmüyor, ancak bağımlılıklar uygunluk durumuna göre bir profil etkinleştirmek/devre dışı bırakmak için herhangi bir yolu varsa o <profiles> ile yapmak mümkün olabilir. eksik bağımlılık varsayarak

+0

Bu yazıya baktınız mı? http://stackoverflow.com/questions/3720768/ignore-maven-dependency-during-specific-execution-phase – Stephan

+0

@Stephan Teşekkürler, farklı ortamlarda dolaşmak için maven profilleri temizleyici buldum. –

+0

Profiller, birden çok, ayrı yapı ortamına sahip olmak için çok iyi çalışır. Bunu işyerinde kullanıyoruz çünkü yapı sunucumuz sistem bağımlılıklarını yerelden farklı bir konumda barındırıyor. – jpaugh

cevap

0

Eğer

Sen genel bağımlılıkları bağımlılığı kaldırmalısınız ve başvurulan olarak taşımak için .m2/settings.xml yoluyla profili ve aktivasyon bir bileşimini kullanabilirsiniz yerel ortamda sadece önemlidir pom.xml (Proje seviyesi profili) profiline bağımlılık yapın ve profili m2/settings.xml ile etkinleştirin.

Ayrıca pom.xml gelen tamamen bağımlılık kaldırmak ve .m2/settings.xml (Kullanıcı seviyesi profili) içinde bulunan bir profilin

introduction to profiles bölüm bkz içine bağımlılık hareket edebilir

.m2/repository/local/dependency/1.0.0-Snapshot/local.jar

<profiles> 
    <profile> 
    <activation> 
     <file> 
     <exists>/home/user/.m2/repository/local/dependency/1.0.0-Snapshot/local.jar</exists> 
     </file> 
    </activation> 
    ... 
    </profile> 
</profiles> 
yılında

dosyanın varlığına dayalı yukarıda belirtilen profilin aktivasyon ihtiyaçlarınızın belki iyi uyuyor başka bir yolu

+0

Sorularımda gördüğünüz profilleri nasıl kullanacağımı biliyorum ve sorgum altındaki yorumum. –

+0

Size daha fazla yardımcı olması gereken profilin dosya tabanlı aktivasyonunu ekledim. – p1brunne

+0

Çapraz sistem çözümü değil. Bunu maven özellikleriyle denedim (bu soruyu sormadan önce) ama bir şekilde sebep olamadım ki işe yaramadı. –

4

Kısa cevap: hayır.

Uzun cevap: Bağımlılık - ortak kısımda veya etkin bir profilde - bildirildikten sonra Maven bunu denediğinde çözülebilir olmalıdır; aksi halde yapı başarısız olur.

Eğer maven istenen davranışa izin veriyorsa, yapının tekrar üretilebilirliği çok fazla acı çekecektir. senin pom.xml gelen

  • çağrı harici karınca, exec-maven-eklentisi veya maven-antrun kullanarak:

    bilinmezlik ve tekraralanamazlığa sizin için sorun değilse, burada bunun nasıl bir ipucu karınca kodunda

  • -plugin,
  • her durumda karınca-contrib en trycatch blokta

sarın Maven Ant Görevler'den artifact:dependencies kullanmak, şiddetle iNCLUDIN vazgeçirmek maven inşasına bu tür şeyler. Komut dizisinden karınca çağrılan ayrı bir işlev olarak sahip olmak, genellikle yeterli olabilir.

İlgili konular