Maaven güncellemesi nasıl zorlanır?


731

Halihazırda çalışmakta olan projemi başka bir bilgisayara aldım ve bağımlılıkları indirmeye başladı.

Görünüşe göre internet bağlantım çöktü ve şimdi aşağıdakileri alıyorum:

    >Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException:
    Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT:
    The following artifacts could not be resolved:
    org.springframework:spring-context:jar:3.0.5.RELEASE,
    org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,
    org.hibernate:hibernate-core:jar:3.6.0.Final,
    org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final,
    org.aspectj:aspectjweaver:jar:1.6.8,
    commons-lang:commons-lang:jar:2.5,

    >mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced.

    >Original error: Could not transfer artifact org.springframework:spring-context:jar:3.0.5.RELEASE from central (http://repo1.maven.org/maven2): No response received after 60000

Maven'i güncellemeye nasıl zorlarım?


Yan not: Atlassian Maven (eklenti SDK'sından) ile bu sorunu yaşadım ve daha yeni bir sürüme yükseltme sorunu çözdü.
Wirone

Yanıtlar:


1597
mvn clean install -U

-Uanlık görüntü bağımlılıklarının zorla güncellenmesi anlamına gelir . Yayın bağımlılıkları bu şekilde güncellenemez.


32
Lwpro2 ile hemfikirim, bu da sorunumu çözdü. Sadece temiz mvn yapmak yeterli değildir. Navi'nin cevabı sorunu çözmek için yeterli değil.
R. van Twisk

1
Yapay veri kullanıyorsanız ve "merkezi" veri havuzu kimliğini kullandıysanız bunun daha karmaşık olduğuna inanıyorum, çünkü meta veriler görünüşte temizlenmiyor.
ggb667

2
Bu, anlık görüntü bağımlılığı kavanozlarını güncellemiyor gibi görünüyor, sadece meta verileri.
Dondurulmuş Bezelye Roddy

Son başarısız bağımlılık indirmeden oluşturulan .lastupdated dosyasından kaynaklanıyorsa, bu yöntem işe yaramaz, Rober Reiz'in cevabı gibi bir şeye ihtiyacımız var
Junchen Liu

1
Önceki sürümler için yardıma bakıyorum ve maven 2.0.4'e kadar, -U bayrağının açıklaması şöyleydi: "-U, - güncelleme-anlık görüntüler Depo politikalarından bağımsız olarak tüm anlık görüntüleri güncelle" 2.0.5 ile başlayarak, "-U, - güncelleme-anlık görüntüler Uzak depolarda güncellenmiş sürümler ve anlık görüntüler için bir kontrol yapmaya zorlar" Ve o zamandan beri böyle oldu. Her iki versiyon da 2007'de yayınlandı. Cevabın bültenleri de hesaba katması gerekip gerekmediğini merak ediyorum.
cleberz

93

Yerel deponuz, anlık görüntülerin ( -Uve --update-snapshotsyalnızca anlık görüntüleri güncellemenin) aksine serbest bırakma kavanozları için bir şekilde kapatılırsa , aşağıdakileri kullanarak yerel repoyu temizleyebilirsiniz:

 mvn dependency:purge-local-repository

Muhtemelen temizleyip tekrar kurmak istersiniz:

 mvn dependency:purge-local-repository clean install

Https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html adresinden daha fazla bilgi edinebilirsiniz.


8
Yaptığım anda mvn dependency:purge-local-repository, tüm bağımlılıkları tekrar tekrar
indirdim

92

-U tüm bağımlılıkların güncellenmesini zorunlu kılıyor gibi görünüyor.

Tek bir bağımlılığı temizlemeden güncellemek istiyorsanız veya -Uyerel repodan kaldırabilir ve sonra derleyebilirsiniz.

Güncelleme için aşağıdaki örnek slf4j-api 1.7.1-SNAPSHOT:

rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOT
mvn compile

Yerel maven deponuza başvuran maven dışında başka bir araç kullanıyorsanız bu iyi çalışır.
Mansur Siddiqui

57

Buradaki tüm cevaplar benim için işe yaramadı. Çekiç yöntemini kullandım:

find ~/.m2/ -name "*.lastUpdated" | xargs rm

Bu sorunu düzeltti :-)


1
@ .m2DJ2*.lastUpdated
sjngm

find ~/.m2/ -name "*.lastUpdated" -delete(çok sayıda dosya bulunursa) bazı sınırları tehlikeye atmadan xargsveya rmaşmadan yapar.
A Sz

45

Etkili bir şekilde yapabilirsiniz Eclipse IDE. Tabii eğer kullanıyorsanız.

Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases

1
Komut satırı sürümünü, @ lwpro2 tarafından yanıtta yaptım, bu da komut satırı üzerinde oluşturmama izin verdi , ancak sonra hala Eclipse içinde yapılamadım. Bunu yapmak Eclipse ile inşa edilmesini sağladı.
Tuğla

Yalnızca güncellemeyi yürüttükten sonra Eclipse'i kapatıp yeniden açarsam benim için çalışır.
ceklock

33

Birisinin yalnızca projenin anlık görüntü bağımlılıklarını güncellemek istemesi ve yapay nesne yüklemek istememesi durumunda:

mvn dependency:resolve -U

IDE'nizdeki bağımlılıkları yeniden içe aktarmayı unutmayın. IDEA içinde pom dosyasına sağ tıklamanız ve Maven -> Reimport'u seçmeniz gerekir


13

Yerel deponuzun içinde ne olduğundan emin değilseniz, şu seçeneği kullanarak bir yapı ateşlemenizi öneririz:

-Dmaven.repo.local=localrepo

Bu şekilde temiz oda ortamında inşa etmeyi garanti edersiniz.


5
bu komut, yerel havuz olarak localrepo klasörünü kullanmak anlamına gelir. bu tek bir proje çalışma alanı için iyidir ancak birden fazla projeniz varsa kötüdür ve az sayıda proje diğerine bağlıdır. -Dmaven.repo.local = / data / my /
localrepoDir

9

Benim durumumda ilk yaptım:

mvn clean install -U

Yine de aynı hatayı gösteriyordu sonra projeyi kapattım ve tekrar açtım. Sonunda çalıştı.


Projeyi yeniden açmamak için yeniden bağımlılıklar yapabileceğinizi düşünüyorum
GlaIZier

4

Tutulma IDE kullanıyorsanız :

  • Proje'yi seçin.
  • Alt + F5 tuşlarına basın, Maven Projesi Güncelleme penceresi açılacaktır.

  • Anlık Görüntülerin / sürümlerin Güncellemeye Zorla seçeneğini işaretleyin ve Tamam'ı tıklayın.

Intellij IDE Kullanıyorsanız

  • ayarlara git / Maven
  • Anlık görüntüleri her zaman güncelle

3

IntelliJ IDE kullandım ve benzer bir sorun vardı ve çözmek için Maven sekmesinde "Tüm Projeler için Kaynak Oluşturma ve Klasörleri Güncelle" seçeneğine tıkladım.

resim açıklamasını buraya girin


2

Hatayı başka bir bağlamda aldım. Bu yüzden benim çözümüm, soruya rastlayan diğerleri için yararlı olabilir:

Sorun: Yerel veri havuzunu, özel bir veri havuzuyla bağlantısı olmayan başka bir bilgisayara kopyaladım. Bu yüzden maven, eserleri geçersiz depoya karşı kontrol etmeye çalıştı.

Benim çözümüm: _maven.repositories dosyalarını kaldırın.


2

Bu Maven ile ilgili en sinir bozucu şeylerden biri. Benim için şunlar olur: Daha fazla bağımlılık ve daha fazlasını isteyen bir bağımlılık eklerim, ancak yavaş bir bağlantım varsa, indirme ve zaman aşımı sırasında durur. Zaman aşımına uğramadan, henüz getirilmeyen tüm bağımlılıklar .m2 önbelleğinde yer tutucularla işaretlenir ve yer tutucu girdisini önbellekten kaldırarak (diğer belirtildiği gibi) kaldırmazsam Maven bunu (asla) almaz.

Gördüğüm kadarıyla, Maven veya daha kesin Eclipse Maven eklentisinin bu konuda bir hatası var. Birisi bunu rapor etmeli.


2

<maven_home>/confDizin altındaki settings.xml dosyanızı kontrol etmeniz gerekir .


1

Android-maps-utils bağımlılığı ile aynı hatayı aldım. Bağımlılık bölümünde aar tipi paket kullanmak sorunumu çözüyor. Varsayılan olarak tür jar şeklindedir, bu nedenle depodaki ne tür bağımlılığın indirildiğinin denetlenmesi gerekebilir.


1

Eclipse'den bu sorunu gidermek için:

1) Maven pom.xml dosyasına aşağıdaki bağımlılığı ekleyin ve pom.xml dosyasını kaydedin.

<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.3.1</version>
</dependency>

2) Projeye gidin >> Maven >> Güncelleme Projesi

projeyi seçin ve Tamam'a tıklayın.

3) İsteğe bağlı adım, 2. adıma kadar çözülmezse, 1. adımdan sonra aşağıdaki adımı uygulayın

Projeye gidin >> Maven >> Projeyi Güncelle >> 'Anlık Görüntü / Sürüm Güncellemesini Zorla' onay kutusunu işaretleyin

projeyi seçin ve Tamam'a tıklayın.


1

Maven'ın önceki sürümleri, mvn clean install ile -U kullanıldığında eksik sürümlerin kontrolüne zorlamadı, ancak yeni sürüm bunu desteklese de.

Hala önceki sürümle mücadele eden biri için aşağıdakiler yardımcı olabilir.

Windows'ta:

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i

Linux'ta:

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

Maven herhangi bir nedenle bağımlılığı indiremediğinde (bağlantı / yok vb.), Bağımlılık-adı.lastUpdate dosyasını $ home / .m2 dizini altındaki ilgili klasöre ".error = Artefakt aktarılamadı" ekler. Bu dosyaların kaldırılması, maven'i bağımlılıkları tekrar getirmeye zorlar.


0

Bu yayınlamanın temel fark eklenmesi önemlidir mvn -U ile ve -U olmadan yani -Uuzaktan ANLıK kavanoz ile yerel ANLıK kavanoz geçersiz kılar.

Projenizde kavanoz mvn installüreten başka modüllerin olduğu durumlarda yerelden oluşturulan yerel SNAPSHOT kavanozları.


0

-U güncelleme maven Repo zorlamak için kullanılır. kullanım

mvn -U clean install

Bu, kabul edilen cevapla aynı cevaptır. 6 yıl önce verildi ...
Kerwin Sneijders

@KerwinSneijders 2 yıl önce cevap ekledim, kabul edilen cevap -U burada ne yaptığı hakkında bilgi vermedi
Sanjeev Guglani

Kabul ettiğim cevabı söyleyebildiğim kadarıyla, yayınlandığı günden itibaren bu bilgiler yer alıyordu. (14 Mart 12). Ve olmasa bile, bu bilgi daha iyi bir cevap değil, ek bilgi olarak kabul edilen cevapların altındaki bir yorumda yayınlanmıştır
Kerwin Sneijders

0

Tüm cevapları burada denedim ama hiçbir şey işe yaramadı. Önce bilgisayarımı yeniden başlattım sonra koştu mvn clean install -U. Bu benim sorunumu çözdü.


0

Maven'in yaptığı şey, projenizin tüm bağımlılıklarını yerel repo (.m2 klasörüne) indirmektir. İnternet, yerel repo ile ilgili sorunlara neden olduğundan, projeniz sorunlarla karşı karşıyadır. Bunun kesinlikle size yardımcı olup olmayacağından emin değilim ancak .m2 klasöründeki depo klasöründeki tüm dosyaları silmeyi deneyebilirsiniz. Yerel repoda hiçbir şey olmayacağından, maven bağımlılıkları tekrar indirmek zorunda kalacak ve böylece bir güncelleme yapmaya zorlanacaktı. Genellikle .m2 klasörü c: users: [kullanıcı adı] :. m2'de bulunur


-1

Bu sorunu farklı bir nedenden dolayı yaşadım. O zaman 5.0.0.M3 olan bahar çekirdeğinin en son sürümünü arayan maven deposuna https: //mvnrepository.com'a gittim / Depo bana pom.xml için bu girişi gösterdi:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.0.0.M3</version>
</dependency>

Ben saf bir aptal, yorum bana kavanozun varsayılan depoda bulunduğunu söylediğini varsaydım.

Ancak, çok kafa vurduktan sonra, xml'nin hemen altında "Not: Alfresco Public deposunda bulunan bu eser ( https://artifacts.alfresco.com/nexus/content/repositories/public/) ) "

XML'deki yorum tamamen yanıltıcıdır. Kavanoz başka bir arşivde bulunuyor, bu yüzden Maven onu bulamadı!


-3

Aşağıdaki komutla en son sürüm ve anlık görüntü veri havuzunu güncellemeye zorlayabiliriz:

mvn --update-snapshots clean install

12
Bu, kabul edilen cevapla aynı cevaptır. -U --update-snapshots'ın kısa biçimidir.
Dondurulmuş Bezelye Roddy

-3

Aynı hatayla karşılaştım ve koşuyorum mvn install -Uve sonra koşmak mvn installbenim için çalıştı.


10
Lütfen "benim için de işe yarayan diğer tüm cevaplarda bahsedilen şey" yanıtlarını yayınlamayın .
kryger

-4

Son zamanlarda bununla karşılaştım ve aşağıdakileri çalıştırarak tüm sorunları çözdüm

mvn -fae install

5
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continueGüncellenmemiş harici bağımlılıkları düzeltmek için garip bir yol gibi görünüyor ..
Donatello

-5

mvn clean install -Uçalışmıyor. Ancak mvn -U cleanbunu takip mvn clean installeder.

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.