Pom.xml dosyasındaki <bağımlılık> altındaki <scope> ne işe yarar?


Yanıtlar:


266

<scope>: Elemanı 6 değerleri alabilir derleme , sağlanan , çalışma zamanı , testi , sistem ve ithalat .

Bu kapsam, bir bağımlılığın geçirgenliğini sınırlamak ve çeşitli oluşturma görevleri için kullanılan sınıfyolunu etkilemek için kullanılır.

derleme

Bu, hiçbiri belirtilmezse kullanılan varsayılan kapsamdır. Derleme bağımlılıkları bir projenin tüm sınıf yollarında kullanılabilir. Ayrıca, bu bağımlılıklar bağımlı projelere yayılır.

sağlanan

Bu derleme gibidir, ancak JDK veya kapsayıcısının çalışma zamanında bağımlılık sağlamasını beklediğinizi gösterir. Örneğin, Java Enterprise Edition için bir web uygulaması oluştururken, web kapsayıcısı bu sınıfları sağladığı için Servlet API'sına ve ilgili Java EE API'lerine bağımlılığı sağlanan kapsama ayarlayacaksınız. Bu kapsam yalnızca derleme ve test sınıfyolunda kullanılabilir ve geçişli değildir.

Çalışma süresi

Bu kapsam, bağımlılığın derleme için gerekli olmadığını, ancak yürütme için olduğunu gösterir. Çalışma zamanı ve test sınıfyollarındadır, ancak derleme sınıfyolunda değildir.

Ölçek

Bu kapsam, bağımlılığın uygulamanın normal kullanımı için gerekli olmadığını ve yalnızca test derleme ve yürütme aşamaları için kullanılabilir olduğunu gösterir.

sistem

Bu kapsam, açıkça içeren JAR'yi sağlamanız dışında sağlanan ile benzerdir. Eser her zaman kullanılabilir ve bir depoya bakılmaz.

içe aktarma (yalnızca Maven 2.0.9 veya sonraki sürümlerde kullanılabilir)

Bu kapsam sadece bölümdeki pom tipine bağımlı olarak kullanılır. Belirtilen POM'un, bu POM bölümündeki bağımlılıklarla değiştirilmesi gerektiğini gösterir. Değiştirildikleri için, bir ithalat kapsamına bağımlılıklar aslında bir bağımlılığın geçişliliğini sınırlamaya katılmazlar.

Sorunuzun ikinci bölümünü cevaplamak için:

Testi çalıştırmak için nasıl kullanabiliriz?

testKapsamın yalnızca test aşaması için bağımlılık kullanımına izin verdiğini unutmayın .

Tüm ayrıntılar için belgeleri okuyun .


Eğer "test" kullanırsanız, oluşturulan .jar sonuçlanır?
markthegrea

1
derleme ve çalışma zamanında bağımlılık gerekiyorsa ne olur?
Albin


12

Altı Bağımlılık kapsamı:

  • derlemek : Varsayılan kapsamı, sınıf yolu her ikisi için kullanılabilir src/mainvesrc/test
  • test : sınıf yolu kullanılabilirsrc/test
  • sağlanan : complie gibi ancak JDK veya çalışma zamanında bir kap tarafından sağlanan
  • çalışma zamanı : derleme için gerekli değildir sadece çalışma zamanında gerekir
  • sistemi : yerel olarak sağlanan sınıf yolu sağlamak
  • import : yalnızca MaOM <dependencyManagement/>2.0.9 veya sonraki sürümlerinde bulunan diğer POM'ları içe aktarabilir


4

Kapsam etiketi her zaman kavanozun geçiş yolundaki bağımlılıklarını ve sınıf yolu düzeyinde kullanılabilirliğini sınırlamak için kullanılır.Herhangi bir kapsam sağlamazsak, varsayılan kapsam derlenecektir .


11
Derleme, uygulamayı derlemek ve çalıştırmak için JAR'a ihtiyacınız olduğu anlamına gelir. Bir web uygulaması için, örnek olarak, JAR WEB-INF / lib dizinine yerleştirilecektir. Sağlanan, derlemek için JAR'a ihtiyacınız olduğu anlamına gelir, ancak çalışma zamanında ortam tarafından sağlanan bir JAR vardır, böylece uygulamanızla paketlenmesine gerek yoktur. Bir web uygulaması için bu, JAR dosyasının WEB-INF / lib dizinine yerleştirilmeyeceği anlamına gelir. Bir web uygulaması için, uygulama sunucusu zaten JAR'yi (veya işlevselliğini) sağlıyorsa, "sağlanan" seçeneğini kullanın; aksi takdirde "derle" seçeneğini kullanın.
Mukesh

1
lütfen cevabınıza bu yorumu ekleyin
Supun Wijerathne

0

Herhangi bir kapsam sağlamazsak, varsayılan kapsam derlenir, Onaylamak istiyorsanız, tutulma düzenleyicisindeki Etkili pom sekmesine gidin, derleme olarak gösterecektir.


OP kapsamı sordu olduğunu ve does not varsayılan kapsamı ne bulma.
Wouter
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.