NOT:
Bu cevap sadece Maven 2 için geçerlidir! Bahsedilen LATEST
ve RELEASE
metaversiyonlar 6 yıl önce Maven 3'te "yeniden üretilebilir yapılar uğruna" atıldı . Lütfen bu Maven 3 uyumlu çözüme bakın .
Her zaman en yeni sürümü kullanmak istiyorsanız, Maven'in sürüm aralıklarına alternatif olarak kullanabileceğiniz iki anahtar kelime vardır. Artık kullandığınız eklentileri / bağımlılıkları denetlemediğiniz için bu seçenekleri dikkatli kullanmalısınız.
Bir eklentiye veya bağımlılığa bağlı olduğunuzda, LATEST veya RELEASE sürüm değerini kullanabilirsiniz. LATEST, belirli bir havuzda en son dağıtılan eser olan en son yayınlanan veya anlık görüntü sürümünü ifade eder. RELEASE, depodaki anlık görüntü olmayan son sürümü ifade eder. Genel olarak, bir yapının spesifik olmayan bir sürümüne bağlı olan yazılım tasarlamak için en iyi uygulama değildir. Yazılım geliştiriyorsanız, bir üçüncü taraf kütüphanesinin yeni bir sürümü yayınlandığında sürüm numaralarını güncellemeniz gerekmemesi için RELEASE veya LATEST işlevini kullanmak isteyebilirsiniz. Yazılımı serbest bıraktığınızda, yapınızın veya projenizin kontrolünüz altında olmayan bir yazılım sürümünden etkilenme olasılığını azaltmak için projenizin her zaman belirli sürümlere bağlı olduğundan emin olmalısınız.
Daha fazla bilgi için Maven kitabının POM Sözdizimi bölümüne bakın. Veya Bağımlılık Sürüm Aralıkları hakkındaki şu dokümana bakın :
- Köşeli ayraç (
[
& ]
) "kapalı" (dahil) anlamına gelir.
- Parantez (
(
& )
) "açık" (özel) anlamına gelir.
Çeşitli seçenekleri gösteren bir örnek. Maven deposunda, com.foo:my-foo aşağıdaki meta verilere sahiptir:
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>com.foo</groupId>
<artifactId>my-foo</artifactId>
<version>2.0.0</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.1</version>
<version>1.1.1</version>
<version>2.0.0</version>
</versions>
<lastUpdated>20090722140000</lastUpdated>
</versioning>
</metadata>
Bu artefakta bağımlılık gerekiyorsa, aşağıdaki seçenekleriniz vardır (diğer sürüm aralıkları elbette belirtilebilir, sadece ilgili olanları burada gösterebilir):
Tam bir sürüm bildirin (her zaman 1.0.1 olarak çözülecektir):
<version>[1.0.1]</version>
Açık bir sürüm bildirin (Maven eşleşen bir sürümü seçtiğinde, bir çarpışma meydana gelmedikçe her zaman 1.0.1 olarak çözülür):
<version>1.0.1</version>
Tüm 1.x için bir sürüm aralığı bildirin (şu anda 1.1.1 olarak çözülecektir):
<version>[1.0.0,2.0.0)</version>
Açık uçlu bir sürüm aralığı bildirin (2.0.0'a kadar çözülecektir):
<version>[1.0.0,)</version>
Sürümü LATEST olarak bildirin (2.0.0 olarak çözülecektir) (maven 3.x sürümünden kaldırılmıştır)
<version>LATEST</version>
Sürümü RELEASE olarak bildir (1.1.1 olarak çözülecek) (maven 3.x sürümünden kaldırıldı):
<version>RELEASE</version>
Varsayılan olarak kendi dağıtımlarınızın Maven meta verilerindeki "en son" girişi güncelleyeceğini, ancak "serbest bırakma" girişini güncellemek için Maven süper POM'sinden "serbest bırakma profilini" etkinleştirmeniz gerektiğini unutmayın . Bunu "-Prelease-profile" veya "-DperformRelease = true" ile yapabilirsiniz.
Maven'in bağımlılık sürümlerini (LATEST, RELEASE ve sürüm aralıkları) seçmesine izin veren herhangi bir yaklaşımın, daha sonraki sürümlerin farklı davranışları olabileceğinden (örneğin bağımlılık eklentisi daha önce bir varsayılanı değiştirdiğinden) zaman sorunları oluşturmak için sizi açık bırakabileceğini vurgulamakta fayda var. değer doğrudan yanlışa, kafa karıştırıcı sonuçlarla).
Bu nedenle, sürümlerde tam sürümleri tanımlamak genellikle iyi bir fikirdir. As Tim'in cevabı işaret, maven-versiyonları-eklentisi bağımlılık sürümlerini özellikle güncellemek için kullanışlı bir araçtır kullanım-son-versiyonlarını: sürümler ve sürümleri: kullanım-son-bültenleri hedefleri.