SORU
27 AĞUSTOS 2008, ÇARŞAMBA


Nasıl bir bağımlılık en son sürümünü kullanmak için Maven söylerim?

Maven, bağımlılıklar genelde bu gibi ayarlanır:

<dependency>
  <groupId>wonderful-inc</groupId>
  <artifactId>dream-library</artifactId>
  <version>1.2.3</version>
</dependency>

Eğer sık bültenleri kitaplıkları ile çalışıyorsanız, sürekli <sürüm> etiketi güncellenmesi biraz sinir bozucu olabilir. Maven her zaman mevcut en son sürümü (deposundan) kullanmak söylemek için herhangi bir yolu var mı?

CEVAP
23 Temmuz 2009, PERŞEMBE


Eğer sen her zaman en yeni sürümü kullanmak istiyorsanız, Maven sürüm aralıkları için alternatif olarak kullanabileceğiniz iki anahtar kelime vardır. Artık/kullandığınız bağımlılıkları eklentileri kontrol olarak bakım ile bu seçenekleri kullanmalısınız.

Bir eklenti ya da bir bağımlılık, bağımlı olduğunuz zaman, en SON SÜRÜMÜ veya sürüm değeri kullanabilirsiniz. En SON en son yayınlanan başvuruyor ya da belirli bir objeyi, belirli bir depoyu en son dağıtılan eserin sürüm anlık. SERBEST depo içinde olmayan anlık son sürüm anlamına gelir. Genel olarak, bir obje olmayan belirli bir sürümüne bağlı yazılım tasarımı için en iyi yöntem değildir. Eğer yazılım geliştiriyorsanız, üçüncü taraf kitaplığı yeni bir sürüm yayınlandığında sürüm numaralarını güncellemek zorunda değilsiniz, böylece bir kolaylık olarak BIRAKIN ya da en SON kullanmak isteyebilirsiniz. Yazılım bıraktığınızda, her zaman projeniz şansını inşa veya proje yazılım sürümü etkilenmeme kontrol altında azaltmak için özel sürümleri bağlı olduğundan emin olun. SON kullanma ve eğer dikkatle BIRAKIN.

Daha fazla ayrıntı için POM Syntax section of the Maven book bkz. Ya da Dependency Version Ranges nerede bu doktor

  • Köşeli ayraç ( [ & ] ) "" (dahil). kapalı demektir
  • ( ( & ) ) parantez bir "anlamına gelir" (özel) açın.

İşte bir örnek, çeşitli seçenekler gösteren. Maven depo, com.foo:benim-foo aşağıdaki meta vardır:

<?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>

Eğer bu eser bir bağımlılık gerekiyorsa, aşağıdaki seçenekler (Diğer version ranges tabii ki, burada sadece konuyla ilgili olanları gösteren belirtilebilir):

Tam sürümü (1.0.1 her zaman çözülür) ilan:

<version>[1.0.1]</version>

Açık bir sürümü (her zaman bir çarpışma Maven eşleşen bir sürümü seçecektir oluşur sürece 1.0.1 için çözer) ilan:

<version>1.0.1</version>

Tüm 1 Sürüm bir dizi ilan.x (şu anda 1.1.1 için çözer):

<version>[1.0.0,2.0.0)</version>

Açık uçlu bir sürümünü bildirmek aralığı (2.0.0 için çözer):

<version>[1.0.0,)</version>

İlan SON olarak sürümünü (2.0.0 için çözer):

<version>LATEST</version>

SERBEST (1.1.1 için çözer): sürüm bildirin

<version>RELEASE</version>

Not Varsayılan olarak kendi dağıtımları olacak update "son" giriş Maven meta, ama güncelleme "serbest" giriş, ihtiyacınız etkinleştirmek için "serbest-profil" Maven super POM. Bu da yapabilirsin "-Prelease-profil" veya "-DperformRelease=true"


Çok önemi vurgulayan bir yaklaşım sağlar Maven seç bağımlılık sürümleri (SON SÜRÜM ve sürüm aralıkları) bırakın açmak için inşa zaman sorunu ve sonraki sürümleri olabilir farklı davranışları (örneğin bağımlılık eklenti var daha önce açık bir varsayılan değeri true false ile karışık sonuçlar).

Bu nedenle genellikle sürümlerde tam sürümlerini tanımlamak için iyi bir fikirdir. Tim's answer belirttiği gibi, maven-versions-plugin güncelleme bağımlılık sürümleri, versions:use-latest-versions versions:use-latest-releases hedefleri için özellikle kullanışlı bir araçtır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EvilControllers

    EvilControll

    20 Ocak 2008
  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006