Maven

2011-05-02 17 views
27

'da "sağlanan" kapsamı "isteğe bağlı" bağımlılık Maven, bazen başımın biraz üzerindedir ... slf4j ve log4j'de isteğe bağlı bağımlılığı olan bir kitaplık oluşturdum. İsteğe bağlı olarak, yani:Maven

  • Kütüphanem derleme sırasında bu giriş çerçeveler ihtiyacı
  • o "keşfeder" onlar onlara
kullanacaksanız zamanında onlara ihtiyacım değil, Kütüphanem onlar/sLF4J log4 gerekmez çünkü Ama kullanıcıların bazı sorunlar bildirmişlerdir

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.16</version> 
    <type>jar</type> 
    <scope>provided</scope> 
    <optional>true</optional> 
</dependency> 

:

Şu anda, "isteğe bağlı" ve "temin" gibi bağımlılık işaretlemiştir. Bağlantım doğru mu? Ne yazık ki, resmi belgeyi bu sorunu anlamak için biraz soyut buluyorum.

cevap

30

this belgelerini denetlediniz. Kullanım durumunuzu çok iyi tanımlar. Bağımlılıkları isteğe bağlı olarak işaretlemek, bunları kitaplığınızı kullanan uygulamada geçiş bağımlılıkları olarak çözmeyecektir (kapsam compile olsa bile). Bir <optional>true</optional> bağımlılık mutlaka gerekli olması anlamına gelmez zamanı ortamına (tarafından sağlanacaktır gerekli bağımlılıkları için kullanılan <scope>provided</scope> için fark olarak

fikri bağımlılıkları bazıları sadece belirli özellikler için kullanılabilir olmasıdır Bu özellik kullanılmıyorsa projeye gerek yoktur,).

Kitaplığınızı kullanan bir proje, isteğe bağlı bağımlılıkların sağladığı herhangi bir işlevselliği kullanırsa, projenin bu bağımlılıkları kendi başlarına beyan etmesi gerekir.

Yapılandırmanızın benim için doğru olduğu anlaşılan, sorunların ortaya çıkma nedenini bilmiyorum. Belki de isteğe bağlı bağımlılıklarınız beklemediğiniz sürümlerdeki diğer kütüphaneler tarafından çözülür. Bu elbette sorunlara neden olabilir.