Maven kullanarak sürüm bağımlılığını tekrar indirmeye zorla


136

Bağımlılığı X olan bir proje üzerinde çalışıyorum.

Projemin pom'a Y'yi açıkça dahil ederdim. Ancak, kullanılmadı ve işleri daha temiz hale getirmek için, onu bağımlılık olarak X'in pom'una ekledim. X bir salım bağımlılığı olarak işaretlenmiştir.

Sorun, Y'yi projemin pom'undan çıkardıktan ve X'in pom'una ekledikten sonra, projem onu ​​almıyor mvn -U clean package. Ben -U güncelleme anlık görüntüleri biliyorum ama sürümleri.

Peki ~ / .m2 / depo dizinini silmeden X'in pom'unun yeniden indirilmesini nasıl zorlayabilirim? Ayrıca, koşmayı denedim dependency:purge-local-repositoryve o da işe yaramadı.


Soruları "maven-2" olarak etiketlediniz. Bu sorunu çözmek için Maven 3'te -U seçeneği eklendi. Yükseltmeyi öneririm.
Mark O'Connor

Sadece bir metodoloji perspektifinden, Xpompasını değiştirirseniz , sadece bir yama numarası değişikliği olsa bile, yeni bir sürüm oluşturmalıdır: 1.3-> 1.3.1. Bu, bu sorunu en başından ortadan kaldıracaktır.
jpaugh

Ancak, anlık görüntülerle de benzer sorunlara sahip olmak hala mümkündür, bu yüzden bazı cevaplar almak iyidir.
jpaugh

Yanıtlar:


166

Maven yeniden indirme bağımlılıkları oluşturamazsınız, ancak bunun yerine yapabileceğiniz şey, yanlış bir şekilde indirilen bağımlılıkları temizlemektir. mvn dependency:purge-local-repository

Bkz. Http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html


11
Bu aynı şey değil mi?
Svish

2
Yalnızca yapı işlerini yapılandırıyorsanız (örneğin bir CI sistemi için) bir sorun olabilecek dosya sistemine erişim gerektirmez.
Oliver Drotbohm

2
Birden fazla proje çalıştırılıyorsa mvn dependency:purge-local-repository clean package, bir proje başka bir proje derleme çalıştırırken yerel depodaki aynı bağımlılığı silebilir. Nasıl önlenir?
vikyd

55

~ / .M2 / deposumu sildim ve yeniden indirmeyi zorunlu kıldı;)


1
Son çare olarak yardımcı oluyor, tutulması ve maven biraz "karışık" bir proje vardı. Sadece .m2 klasörünün silinmesi projenin derlenmesini ve düzgün çalışmasını sağlamıştır.
Leonardo

5
Ayrıca, havuzun içinden yenilenmesi gerektiğini bildiğiniz bağımlılıkları seçici olarak silmek de mümkündür. Manuel bir tasfiye, eğer olacak.
jpaugh

41

Bence bu komutu takip etmek size yardımcı olabilir!


mvn -U clean install

4
Maven kullanarak bağımlılığı serbest bırakın . Hayır, bu daha iyi bir yorum olabilirdi.
Naman

31

Ali Tokmen cevap için teşekkürler. Aşağıdaki komutla belirli yerel bağımlılığı silmeye zorladım:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

Bununla, utils.m2 / havuzumdan kaldırılır ve çalıştırdığımda her zaman utilsJAR bağımlılığını yeniden indirir mvn clean install.


1
Sadece bir bağımlılığı yeniden indirmek için maven zorlamak için bir yol gerekiyordu. Aslında bunu yapan tek cevap budur, oysa diğer cevaplar her şeyi kaldırmayı önermektedir. Thank you
smac89

14

Proje sağ tıklayın-> Maven -> Projeyi Güncelle ve ekran görüntüsünde olduğu gibi onay kutularını işaretleyin. Sürümleri de güncelleyecek :)

resim açıklamasını buraya girin


5
Bu "/ Bültenler" bölümünü nasıl uyguladıklarını bilmek güzel olurdu.
Ulises Layera

Bunun için ihtiyacım olan şey için teşekkürler.
JamesG

12
mvn clean install -U

-U bağımlılıkların zorla güncellenmesi anlamına gelir.

Tek bir bağımlılığı temiz veya -U olmadan güncellemek istiyorsanız, yerel repodan kaldırabilir ve sonra oluşturabilirsiniz.


Yine, bu sadece SNAPSHOT bağımlılıklarını yeniden indirir.
Zardoz89

6

X'e eklediğinizde, X'in sürüm numarasını artırmanız gerekirdi, yani X-1.2
O zaman X-1.2 kurulmuş / dağıtılmış olmalı ve yeni X-1.2 sürümüne bağlı olmak için X'e olan proje bağımlılığınızı değiştirmiş olmalısınız


6

Grubunun kimliğini biliyorsanız, Xtümünü Xve bağımlılıklarını yeniden indirmek için bu komutu kullanabilirsiniz

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

Kullanmayı öneren diğer cevaplarla aynı şeyi yapar dependency:purge-local-repository, ancak yalnızca ilgili her şeyi siler ve yeniden indirir X.


4

Gerçekten tüm bağımlılıkları zorla indirmek istiyorsanız, tüm maven deposunu yeniden başlatmayı deneyebilirsiniz. Daha önce açıklanan bu makalede olduğu gibi şunları kullanabilirsiniz:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

Silinen jar dosyalarını yeniden indirmeye zorladığı için geçersiz LOC'nin geldiği ~ / .m2 / repository ..... / actual_path dosyasını silmeniz yeterlidir. Depo klasörünün tamamını silmeyin, bunun yerine hatanın geldiği belirli bir klasörü silin.


0

İ silmek ~/.m2/repositorysorununuzu çözecektir. Ancak, hala eski tutmanız gerekiyorsa ~/.m2/repository, maven yerel yolunu geçici olarak değiştirebilirsiniz.

IntelliJ üzerinde çalışıyorsanız Maven Ayarları'na gidin ve Yerel Depo yolunu başka bir yere değiştirin. Oradaki geçersiz kılma onay kutusunu işaretlemeniz gerekebilir.

resim açıklamasını buraya girin


-1

Yukarıda verilen cevapların çoğu sorunu çözecektir.

Ancak IntelliJ kullanıyorsanız ve yalnızca sizin için otomatik olarak düzeltmesini istiyorsanız Maven Ayarları'na gidin.

Derleme, Yürütme, Dağıtım -> Derleme Araçları -> Maven

resim açıklamasını buraya girin

Çevrimdışı Çalışmayı Devre Dışı Bırak

Anlık görüntüleri her zaman güncelle'yi etkinleştir (Gerektiğinde değiştir)


1
Siz varken aşağı oylama nedenini paylaşabiliyorsanız sevinirim. Teşekkür ederim.
Abhishek Nandgaonkar

1
Muhtemelen, anlık görüntüler yayınlanmadığından, bu sorunu çözmez.
soru

-2

Oluşturma yoluna git ... mevcut maven kitaplığını sil u eklendi ... kitaplık ekle'yi tıklayın ... maven yönetilen bağımlılıkları tıklayın ... sonra maven proje ayarlarını tıklayın ... maven bağımlılıklarını çöz onay kutusunu işaretleyin ... hepsini indireceğim maven bağımlılıkları


2
Bu, soru tarafından desteklenmeyen bir varsayım olan bazı IDE kullanımını varsayar ve hangi IDE'yi bile belirtmediniz!
Phil
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.