จะบังคับให้อัพเดต maven ได้อย่างไร?


731

ฉันอิมพอร์ตโปรเจ็กต์ที่ทำงานอยู่แล้วบนคอมพิวเตอร์เครื่องอื่นและมันเริ่มดาวน์โหลดการอ้างอิง

เห็นได้ชัดว่าการเชื่อมต่ออินเทอร์เน็ตของฉันล้มเหลวและตอนนี้ฉันได้รับสิ่งต่อไปนี้:

    >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 ให้อัปเดตได้อย่างไร


หมายเหตุด้านข้าง: ฉันมีปัญหากับ Atlassian Maven (จากปลั๊กอิน SDK) และการอัปเกรดเป็นเวอร์ชันที่ใหม่กว่าแก้ปัญหาได้
Wirone

คำตอบ:


1597
mvn clean install -U

-Uหมายถึงการอัปเดตแรงของการพึ่งพาสแน็ปช็อต การอ้างอิงการปลดปล่อยไม่สามารถอัปเดตด้วยวิธีนี้


32
ฉันเห็นด้วยกับ lwpro2 สิ่งนี้แก้ปัญหาของฉันได้เช่นกัน แค่ทำความสะอาด mvn ไม่เพียงพอ คำตอบของ Navi นั้นไม่เพียงพอที่จะแก้ปัญหา
R. van Twisk

1
ฉันเชื่อว่าสิ่งนี้ซับซ้อนกว่านี้หากคุณใช้วัตถุและใช้รหัสพื้นที่เก็บข้อมูล "กลาง" เพราะข้อมูลเมตาไม่ได้รับการล้างออก
ggb667

2
ดูเหมือนจะไม่อัปเดตขวดยึดสแนปชอตจริง ๆ เพียงแค่ข้อมูลเมตา
Roddy of Peas แช่แข็ง

ถ้ามันเกิดจากไฟล์. lastupdated ที่สร้างขึ้นจากการดาวน์โหลดที่ไม่สำเร็จล่าสุดวิธีนี้จะไม่ทำงานเราต้องการบางอย่างเช่นคำตอบของ Rober Reiz
Junchen Liu

1
ฉันกำลังดูความช่วยเหลือสำหรับเวอร์ชันก่อนหน้าและสูงสุดถึง maven 2.0.4 คำอธิบายสำหรับแฟล็ก -U คือ: "-U, - update-snapshots อัพเดต snapshot ทั้งหมดโดยไม่คำนึงถึงนโยบายพื้นที่เก็บข้อมูล" โดยเริ่มจาก 2.0.5 มันกลายเป็น: "-U, - update-snapshots บังคับให้ตรวจสอบการอัพเดทและสแน็ปช็อตบนที่เก็บข้อมูลระยะไกล" และมันก็เป็นอย่างนั้นมาตั้งแต่นั้น ทั้งสองเวอร์ชันเปิดตัวในปี 2550 ฉันสงสัยว่าคำตอบจะต้องได้รับการแก้ไขในบัญชีสำหรับการเผยแพร่ด้วยหรือไม่
cleberz

93

หากที่เก็บข้อมูลโลคัลของคุณถูกบดบังอย่างใดอย่างหนึ่งสำหรับเหยือกปล่อยเมื่อเทียบกับสแน็ปช็อต ( -Uและ--update-snapshotsอัปเดตสแน็ปช็อตเท่านั้น) คุณสามารถกำจัด repo ในพื้นที่ได้โดยใช้สิ่งต่อไปนี้:

 mvn dependency:purge-local-repository

คุณอาจต้องการล้างและติดตั้งอีกครั้ง:

 mvn dependency:purge-local-repository clean install

มีข้อมูลเพิ่มเติมมากมายที่https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html


8
ทันทีที่ฉันทำmvn dependency:purge-local-repositoryมันก็แค่ดาวน์โหลดอ้างอิงทั้งหมดอีกครั้งซึ่งเป็นสิ่งที่ฉันต้องการ
smac89

92

-U ดูเหมือนว่าจะบังคับให้อัปเดตการอ้างอิงทั้งหมด

หากคุณต้องการอัปเดตการพึ่งพาครั้งเดียวโดยไม่ต้องล้างหรือ-Uคุณสามารถลบมันออกจาก repo ในพื้นที่ของคุณแล้วสร้าง

ตัวอย่างด้านล่างหากมีการอัพเดทslf4j-api 1.7.1-SNAPSHOT:

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

วิธีนี้ใช้ได้ผลดีถ้าคุณใช้เครื่องมืออื่นนอกเหนือจาก Maven ที่อ้างอิงที่เก็บ Maven ในพื้นที่ของคุณ
Mansoor Siddiqui

57

คำตอบทั้งหมดที่นี่ไม่ได้ผลสำหรับฉัน ฉันใช้วิธีค้อน:

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

ที่แก้ไขปัญหา :-)


1
@ DJ2 นี้จะลบไฟล์ทั้งหมดใน.m2ไดเรกทอรีที่ชื่อ*.lastUpdated
sjngm

find ~/.m2/ -name "*.lastUpdated" -deleteจะทำโดยไม่มีอันตรายxargsหรือrmเกินขีด จำกัด (ถ้าพบไฟล์จำนวนมาก)
Sz

45

Eclipse IDEคุณสามารถทำได้อย่างมีประสิทธิภาพจาก แน่นอนถ้าคุณใช้มัน

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

1
ฉันทำเวอร์ชันบรรทัดคำสั่งในคำตอบโดย @ lwpro2 ซึ่งให้ฉันสร้างบนบรรทัดคำสั่งแต่แล้วฉันก็ยังไม่สามารถสร้างภายใน Eclipse การทำเช่นนี้ทำให้ได้รับการสร้างผ่าน Eclipse
อิฐ

ใช้งานได้สำหรับฉันเฉพาะเมื่อฉันปิดและเปิด Eclipse อีกครั้งหลังจากดำเนินการอัพเดต
ceklock

33

ในกรณีที่มีคนต้องการอัปเดตสแนปชอตของโครงการและไม่ต้องการติดตั้งสิ่งประดิษฐ์:

mvn dependency:resolve -U

อย่าลืมนำเข้าอ้างอิงใน IDE ของคุณอีกครั้ง ใน IDEA คุณต้องคลิกขวาที่ไฟล์ pom และเลือก Maven -> นำเข้าอีกครั้ง


13

หากคุณไม่แน่ใจว่ามีอะไรอยู่ในพื้นที่เก็บข้อมูลในพื้นที่ของคุณฉันขอแนะนำให้สร้างบิลด์ด้วยตัวเลือก:

-Dmaven.repo.local=localrepo

ด้วยวิธีนี้คุณจะมั่นใจได้ว่าจะสร้างในห้องสะอาด


5
คำสั่งนี้หมายถึงใช้โฟลเดอร์ localrepo เพื่อเป็นพื้นที่เก็บข้อมูลในท้องถิ่น นั่นเป็นสิ่งที่ดีสำหรับเวิร์กสเปซโครงการเดียว แต่ไม่ดีถ้าคุณมีมากกว่าหนึ่งโครงการ ถ้าอย่างนั้นดีกว่าของคุณในการให้เส้นทางแบบเต็มเช่น -Dmaven.repo.local = / data / my / localrepoDir
tgkprog

9

ในกรณีของฉันก่อนอื่นฉันก็คือ:

mvn clean install -U

ถึงกระนั้นมันก็แสดงข้อผิดพลาดเดียวกันจากนั้นฉันก็ปิดโปรเจ็กต์และเปิดใหม่อีกครั้ง ในที่สุดก็ทำงานได้


ฉันคิดว่าคุณสามารถทำการอ้างอิงการนำเข้าใหม่เพื่อหลีกเลี่ยงการเปิดโครงการอีกครั้ง
GlaIZier

4

หากคุณใช้eclipse IDE อยู่แล้ว:

  • เลือกโครงการ
  • กด alt + F5 หน้าต่างสำหรับ Update Maven Project จะปรากฏขึ้น

  • ตรวจสอบ - บังคับอัปเดตภาพรวม / ออกแล้วคลิกตกลง

ถ้าใช้Intellij IDE

  • ไปที่การตั้งค่า / Maven
  • ทำเครื่องหมายอัปเดตสแนปชอตเสมอ

3

ฉันใช้ IntelliJ IDE และฉันมีปัญหาที่คล้ายกันและเพื่อแก้ไขฉันคลิกใน "สร้างแหล่งที่มาและอัปเดตโฟลเดอร์สำหรับโครงการทั้งหมด" ในแท็บ Maven

ป้อนคำอธิบายรูปภาพที่นี่


2

ฉันมีข้อผิดพลาดในบริบทอื่น ดังนั้นวิธีการแก้ปัญหาของฉันอาจเป็นประโยชน์กับคนอื่น ๆ ที่ขัดขวางคำถาม:

ปัญหา: ฉันได้คัดลอกที่เก็บภายในเครื่องไปยังคอมพิวเตอร์เครื่องอื่นซึ่งไม่มีการเชื่อมต่อไปยังที่เก็บพิเศษ ดังนั้น Maven จึงพยายามตรวจสอบสิ่งประดิษฐ์กับที่เก็บที่ไม่ถูกต้อง

โซลูชันของฉัน: ลบไฟล์ _maven.repositories


2

นี่เป็นหนึ่งในสิ่งที่น่ารำคาญที่สุดเกี่ยวกับ Maven สำหรับฉันแล้วสิ่งต่อไปนี้จะเกิดขึ้น: ถ้าฉันเพิ่มการพึ่งพาที่ร้องขอการขึ้นต่อกันที่เพิ่มมากขึ้นเรื่อย ๆ แต่มีการเชื่อมต่อที่ช้ามันจะหยุดในขณะที่ดาวน์โหลดและหมดเวลา ในขณะที่หมดเวลาการอ้างอิงทั้งหมดที่ยังไม่ได้ดึงข้อมูลจะถูกทำเครื่องหมายด้วยตัวยึดสถานที่ในแคช. m2 และ Maven จะไม่รับ (ไม่) หยิบมันเว้นแต่ฉันจะลบรายการตัวยึดตำแหน่งออกจากแคช

ดังนั้นเท่าที่ฉันเห็น Maven หรือปลั๊กอิน Eclipse Maven แม่นยำยิ่งขึ้นมีข้อผิดพลาดเกี่ยวกับเรื่องนี้ บางคนควรรายงานสิ่งนี้



1

ฉันมีข้อผิดพลาดเดียวกันกับ Android-maps-utils การใช้แพ็คเกจประเภท aar ในส่วนการพึ่งพาแก้ปัญหาของฉัน โดยค่าเริ่มต้นประเภทคือขวดดังนั้นมันอาจถูกตรวจสอบประเภทของการพึ่งพาในที่เก็บจะดาวน์โหลด


1

สำหรับการแก้ไขปัญหานี้จาก Eclipse:

1) เพิ่มการพึ่งพาด้านล่างใน Maven pom.xml และบันทึกไฟล์ pom.xml

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

2) ไปที่โครงการ >> Maven >> อัปเดตโครงการ

เลือกโครงการและคลิกตกลง

3) ขั้นตอนเพิ่มเติมถ้าไม่ได้รับการแก้ไขจนถึงขั้นตอนที่ 2 ให้ทำขั้นตอนด้านล่างหลังจากทำขั้นตอนที่ 1

ไปที่โครงการ >> Maven >> อัปเดตโครงการ >> ทำเครื่องหมายในช่องทำเครื่องหมาย 'Force Update of Snapshots / Release'

เลือกโครงการและคลิกตกลง


1

Maven เวอร์ชันก่อนหน้านี้ไม่ได้บังคับให้ตรวจสอบว่ามีรุ่นที่หายไปหรือไม่เมื่อใช้ -U ด้วยการติดตั้ง mvn ใหม่ทั้งหมด แต่เป็น snapshot แม้ว่ารุ่นที่ใหม่กว่าจะรองรับสิ่งนี้

สำหรับบางคนที่ยังคงดิ้นรนกับเวอร์ชันก่อนหน้าการติดตามต่อไปนี้มีประโยชน์ -

บน Windows:

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

บน Linux:

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

เมื่อใดก็ตามที่ maven ไม่สามารถดาวน์โหลดการพึ่งพาได้ไม่ว่าด้วยเหตุผลใดก็ตาม (การเชื่อมต่อ / ไม่มีอยู่ ฯลฯ ) มันจะเพิ่ม ".error = ไม่สามารถถ่ายโอนสิ่งประดิษฐ์" ในไฟล์ dependency-name.lastUpdate ในโฟลเดอร์ตามลำดับภายใต้ไดเรกทอรี $ home / .m2 การลบไฟล์เหล่านี้จะบังคับให้ Maven พยายามดึงข้อมูลการอ้างอิงอีกครั้ง


0

สิ่งสำคัญคือการเพิ่มว่าความแตกต่างหลักของการทำงานmvn กับ -Uและไม่มี -Uคือ-Uจะแทนที่ไห SNAPSHOT ท้องถิ่นของคุณด้วยไห SNAPSHOT ระยะไกล

ไห SNAPSHOT ท้องถิ่นที่สร้างขึ้นจากท้องถิ่นmvn installในกรณีที่คุณมีโมดูลอื่น ๆ ของ proj ของคุณที่สร้างขวด


0

-U ใช้ในการบังคับให้อัพเดต maven Repo ใช้

mvn -U clean install

นี่คือคำตอบที่แน่นอนเหมือนกับคำตอบที่ยอมรับ เมื่อ 6 ปีก่อน ...
Kerwin Sneijders

@KerwinSneijders ฉันได้เพิ่มคำตอบเมื่อ 2 ปีก่อนในขณะนั้นคำตอบที่ยอมรับไม่ได้ให้ข้อมูลเกี่ยวกับสิ่งที่ -U ทำที่นี่
Sanjeev Guglani

เท่าที่ฉันสามารถบอกคำตอบที่ยอมรับได้รวมถึงข้อมูลตั้งแต่วันที่โพสต์ (14 มีนาคม '12) และแม้ว่ามันจะไม่เป็นเช่นนั้นข้อมูลนี้ถูกโพสต์ในความคิดเห็นด้านล่างคำตอบที่ยอมรับได้ดีกว่าเพราะมันไม่ใช่คำตอบ แต่เป็นข้อมูลเพิ่มเติม
Kerwin Sneijders

0

ฉันลองคำตอบทั้งหมดที่นี่ แต่ดูเหมือนจะไม่มีอะไรทำงาน mvn clean install -Uเริ่มต้นใหม่คอมพิวเตอร์ของฉันวิ่งก่อนแล้ว นั่นช่วยแก้ไขปัญหาของฉัน


0

สิ่งที่ Maven ทำคือมันดาวน์โหลดโครงการทั้งหมดของคุณไปยัง repo ในพื้นที่ (.m2) เนื่องจากอินเทอร์เน็ตทำให้เกิดปัญหากับ repo ในพื้นที่ของคุณโครงการของคุณจึงประสบปัญหา ฉันไม่แน่ใจว่าสิ่งนี้จะช่วยคุณได้อย่างแน่นอนหรือไม่ แต่คุณสามารถลองลบไฟล์ทั้งหมดในโฟลเดอร์ที่เก็บข้อมูลภายในโฟลเดอร์. m2 เนื่องจากจะไม่มีอะไรใน repo ท้องถิ่น maven จะถูกบังคับให้ดาวน์โหลดการอ้างอิงอีกครั้งจึงบังคับให้มีการปรับปรุง โดยทั่วไปแล้วโฟลเดอร์. m2 จะอยู่ที่ c: users: [username] :. m2


-1

ฉันมีปัญหานี้ด้วยเหตุผลอื่น ฉันไปที่ที่เก็บ Maven https://mvnrepository.comกำลังค้นหาเวอร์ชั่นล่าสุดของ spring core ซึ่งในเวลานั้นคือ 5.0.0.M3 / ที่เก็บแสดงรายการนี้สำหรับ pom.xml ของฉัน:

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

คนโง่ไร้เดียงสาที่ฉันเป็นฉันคิดว่าความคิดเห็นนั้นบอกฉันว่าโถอยู่ในที่เก็บเริ่มต้น

อย่างไรก็ตามหลังจากการปะทะกันจำนวนมากฉันเห็นข้อความใต้ xml ที่พูดว่า "หมายเหตุ: สิ่งประดิษฐ์นี้ตั้งอยู่ที่ที่เก็บสาธารณะ Alfresco ( https://artifacts.alfresco.com/nexus/content/repositories/public/) ) "

ดังนั้นความคิดเห็นใน XML จึงทำให้เข้าใจผิดอย่างสมบูรณ์ เหยือกตั้งอยู่ในที่เก็บอื่นซึ่งเป็นสาเหตุที่ Maven หาไม่พบ!


-3

เราสามารถบังคับให้ได้รับการอัปเดตล่าสุดของที่เก็บข้อมูลและ snapshot ด้วยคำสั่งด้านล่าง:

mvn --update-snapshots clean install

12
นี่คือคำตอบที่แน่นอนเหมือนกับคำตอบที่ยอมรับ -U เป็นรูปแบบสั้น ๆ ของ - ปรับปรุง-snapshots
Roddy of the Peas แช่แข็ง

-3

ฉันมีข้อผิดพลาดเดียวกันและทำงานmvn install -Uแล้วmvn installทำงานให้ฉัน


10
กรุณาอย่าโพสต์"สิ่งที่กล่าวถึงในคำตอบอื่น ๆ ทั้งหมดทำงานให้ฉันด้วย"คำตอบ
kryger

-4

ฉันวิ่งเข้าไปในนี้เมื่อเร็ว ๆ นี้และใช้งานต่อไปนี้แก้ไขปัญหาทั้งหมด

mvn -fae install

5
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continueดูเหมือนจะเป็นวิธีที่แปลกในการแก้ไขการพึ่งพาภายนอกที่ไม่ได้อัปเดต ..
Donatello

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.