Maven'e bağımlılık ekleme


134

Sahip olduğum bir jar dosyasını nasıl alabilirim ve maven 2'deki bağımlılık sistemine nasıl ekleyebilirim? Bu bağımlılığın sürdürücüsü olacağım ve kodumun derlenmesi için sınıf yolundaki bu kavanoza ihtiyacı var.

Yanıtlar:


139

Bunu iki adımda yapmanız gerekecek:

1. JAR'nıza bir groupId, artifactId ve sürüm verin ve deponuza ekleyin.

Dahili bir deponuz yoksa ve JAR'ınızı yerel deponuza eklemeye çalışıyorsanız, rastgele herhangi bir groupId / artifactIds kullanarak onu aşağıdaki gibi yükleyebilirsiniz:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Ayrıca, varsa, dahili havuzunuza da dağıtabilir ve bunu kuruluşunuzdaki diğer geliştiriciler tarafından kullanılabilir yapmak isteyebilirsiniz. Sadece eserlerimin web tabanlı arayüzünü yapay nesneler eklemek için kullanıyorum, ancak aynı şeyi kullanarak da yapabilmelisiniz mvn deploy:deploy-file ....

2. Bu JAR'a başvurmak için bağımlı projeleri güncelleyin.

Ardından, JAR'ı kullanan projelerin pom.xml dosyasındaki bağımlılığı, öğeye aşağıdakileri ekleyerek güncelleyin:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3
Dağıtım hakkında daha fazla ayrıntı ekleyebilir misiniz? Dahili bir havuzumuz var ve yerel jar yüklü dosyamı bu depoya dağıtmak istiyorum, böylece diğer geliştiriciler ve yapı sunucumuz da kavanozu alacak.
Kieveli

Bu cevap tüm beğenileri almalı! Bunu, hem Google App Engine hem de Heroku'daki maven projelerime başarılı bir şekilde bağımlılıklar eklemek için kullandım.
Leo C Han

93

Ayrıca bir maven deposunda olmayan bir bağımlılık da belirtebilirsiniz. Ekibiniz için hiçbir merkezi maven deposu yoksa veya bir CI sunucunuz varsa yararlı olabilir

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4
Kavanoz yerine başka bir pom dosyasına güvenebilir miyim?
Jayen

45

Aslında, bunu araştırırken, tüm bu cevapların yanlış olduğunu düşünüyorum. Anlayış seviyemiz nedeniyle sorunuz yanıltıcı maven. Ben de diyorum çünkü tanışıyorum maven.

İçinde Eclipse, projenize bir jar dosyası eklemek istediğinizde, normalde jar'ı manuel olarak indirir ve daha sonra lib dizinine bırakırsınız . Maven ile bunu böyle yapmazsınız. İşte yapmanız gerekenler:

  • Mvnrepository şehrine git
  • Eklemek istediğiniz kütüphaneyi arayın
  • Kopya dependencydeyimi içine seninpom.xml
  • yoluyla yeniden inşa et mvn

Şimdi, bağımlılık listesi ile birlikte mavenbağlanacak ve indirecek ve jarsahip olabileceği ek bağımlılıkları otomatik olarak çözecektir jar. Yani jaraynı zamanda ortak günlük kaydı gerekiyorsa, bu da indirilecektir.


5
Spring Tool Suite kullanıyorum (Eclipse üzerine kurulu). Yukarıdaki çözümde 1 ve 2. adımlardan sonra: 1. STS düzenleyicide pom.xml dosyasını açın, alttaki "Bağımlılıklar" sekmesini tıklayın 2. Bağımlılıklar grubunda 3. "Ekle" yi tıklayın 3. Tarayıcı penceresinden "Maven" sekmesi bağımlılık bilgilerini kopyalayın / yapıştırın ( groupId, artifactId, version) STS 4'te "Bağımlılığı Seç" açılır penceresinde karşılık gelen alanlara girin. Tamam'ı tıklatın. 5. pom.xml dosyasını kaydet Kaydettiğinizde, sabit diskteki maven dizinim ve STS'deki maven bağımlılık ayarı saniyeler içinde güncellenir. .Xml dosyasını doğrudan düzenleyebilirsiniz, ancak aracı kullanmak xml biçimi sorunlarının önlenmesine yardımcı olabilir.
Chris R

2
Bu gerçekten bir şeyler yapmanın tercih edilen yoludur, ancak bunu yapamayacağınız durumlar vardır (örneğin, mvnrepository'de olmayan özel kavanoz). Bu durumda, onu "manuel" olarak eklemenin bir yoluna ihtiyacınız olacaktır, bu durumda başka bir yanıtın çözümü olacaktır.
Thunderforge

Sorulan sorunun yeni başlayan bir sorudan daha az olması da mümkündür. Bunu, maven ile çalışmak için harcanan zamandan gelen doğru ifadeler olmadan bir şeyler yapmak isteyen insanlar için koydum. (O zamanki gibi)
Kieveli

ÖPÜCÜK Teşekkür ederim, bunun Java'daki C # Nuget eşdeğeri olduğunu okudum ama çalıştırılacak düğmeyi veya cmd'yi bulmaya çalışıyordum. Tam olarak 1: 1 değil, işi yapar.
Terrance

IntelleJ maven'de proje nasıl yeniden inşa edilir?
Irfan Nasim

14

Bunu yapardım:

  1. pom'da istediğiniz gibi bağımlılığı ekleyin:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

  2. çalıştırmak mvn installkavanoz indirmeye çalışacağız ve başarısız. İşlemde, kavanozu hata mesajıyla yüklemenin tam komutunu verecektir. Bu komutu kopyalayın ve çalıştırın! kolay ha ?!


3

Bir bağımlılığı "tanınmış bir depoya" nasıl aktaracağınızı ve sadece POM'nizi nasıl güncelleyeceğinizi sormadığınızı varsayacağım.

Evet, o zaman bu okumak istediğiniz şeydir.

Dahili bir havuz sunucusu kurmak isteyen herkes için, buraya bakın (Maven 2'yi kullanma ile ilgili sorunun yarısı belgeleri bulmaktır)


Kendime güven duymak istiyorum. Bu bir kurum içi kütüphane.
Milhous
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.