บังคับให้ดาวน์โหลดการพึ่งพารีลีสซ้ำโดยใช้ Maven


142

ฉันกำลังทำงานในโครงการที่มีการพึ่งพา X. X ขึ้นอยู่กับ Y

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

ปัญหาคือว่าหลังจากที่ถอด Y จาก pom โครงการของฉันและเพิ่มลงใน pom X mvn -U clean packageของโครงการของฉันไม่ได้ยกขึ้นบน ฉันรู้ -U อัปเดตสแนปชอต แต่ไม่เผยแพร่

ดังนั้นโดยไม่ต้องลบไดเร็กทอรี ~ / .m2 / repositoryฉันจะบังคับให้ดาวน์โหลด X's pom ซ้ำได้อย่างไร นอกจากนี้ฉันลองวิ่งdependency:purge-local-repositoryแล้วก็ไม่ได้ผลเช่นกัน


คุณได้ติดแท็กคำถามว่า "maven-2" เพิ่มตัวเลือก -U ใน Maven 3 เพื่อแก้ปัญหานี้ ฉันขอแนะนำให้อัปเกรด
Mark O'Connor

เพียงแค่จากมุมมองวิธีการถ้าคุณเปลี่ยนX's pom แล้วมันควรจะถือว่าเป็นรุ่นใหม่ถึงแม้ว่ามันจะเป็นเพียงการเปลี่ยนแปลงจำนวนแพทช์: ->1.3 1.3.1นั่นจะช่วยขจัดปัญหานี้ได้ตั้งแต่เริ่มต้น
jpaugh

อย่างไรก็ตามยังคงมีปัญหาที่คล้ายกันกับสแนปชอตเช่นกันดังนั้นจึงควรมีคำตอบ
jpaugh

คำตอบ:


174

คุณไม่สามารถทำการดาวน์โหลด Maven ซ้ำได้ แต่สิ่งที่คุณสามารถทำได้คือการล้างข้อมูลอ้างอิงที่ดาวน์โหลดอย่างไม่ถูกต้องโดยใช้ mvn dependency:purge-local-repository

ดู: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html


13
แบบนั้นไม่ใช่เหรอ
Svish

2
ไม่ต้องการการเข้าถึงระบบไฟล์ซึ่งอาจเป็นปัญหาหากคุณกำหนดค่างานบิวด์เท่านั้น (สำหรับระบบ CI เป็นต้น)
Oliver Drotbohm

2
หากมีการรันหลายโปรเจ็กmvn dependency:purge-local-repository clean packageต์อาจเป็นโปรเจ็กต์หนึ่งลบการอ้างอิงเดียวกันในที่เก็บโลคัลในขณะที่โปรเจ็กต์อื่นกำลังรันคอมไพล์ หลีกเลี่ยงอย่างไร?
vikyd

56

ฉันเพิ่งลบ ~ / .m2 / repository ของฉันและบังคับให้ดาวน์โหลดใหม่;)


1
ช่วยเป็นทางเลือกสุดท้ายฉันมีโครงการที่คราสและมาเวนค่อนข้าง "สับสน" เพียงแค่ลบโฟลเดอร์. m2 ทำให้โปรเจ็กต์คอมไพล์และรันได้อย่างถูกต้อง
Leonardo

6
นอกจากนี้ยังสามารถเลือกลบการอ้างอิงที่คุณรู้ว่าจำเป็นต้องรีเฟรชจากภายในที่เก็บ หากคุณต้องการล้างด้วยตนเอง
jpaugh

44

ฉันคิดว่าคำสั่งต่อไปนี้อาจช่วยคุณได้!


mvn -U clean install

5
ปลดปล่อยการพึ่งพาโดยใช้ Mavenในคำถาม ไม่นี่อาจเป็นความคิดเห็นที่ดีกว่า
Naman

34

ขอบคุณคำตอบ Ali Tokmen ฉันจัดการเพื่อบังคับให้ลบการพึ่งพาโลคัลโดยใช้คำสั่งต่อไปนี้:

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

ด้วยวิธีนี้มันจะเอาutilsจาก .m2 ของฉัน / พื้นที่เก็บข้อมูลและมันก็อีกครั้งดาวน์โหลดutilsพึ่งพา JAR mvn clean installเมื่อผมทำงาน


1
ฉันแค่ต้องการวิธีบังคับให้ maven ดาวน์โหลดการอ้างอิงอีกครั้ง นี่เป็นคำตอบเดียวที่ทำได้จริงในขณะที่คำตอบอื่น ๆ แนะนำให้ลบทุกอย่างออก ขอบคุณ
smac89

14

คลิกขวาโครงการ -> Maven -> อัปเดตโครงการและทำเครื่องหมายที่ช่องทำเครื่องหมายในภาพหน้าจอ มันจะอัพเดตรุ่นต่างๆเช่นกัน :)

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


5
คงจะดีไม่น้อยที่ทราบว่าพวกเขานำส่วน "/ Releases" นั้นไปใช้อย่างไร
Ulises Layera

ขอบคุณสำหรับสิ่งที่ฉันต้องการ
JamesG

12
mvn clean install -U

-U หมายถึงการบังคับให้อัปเดตการอ้างอิง

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


อีกครั้งสิ่งนี้จะดาวน์โหลดการอ้างอิง SNAPSHOT อีกครั้งเท่านั้น
Zardoz89

6

เมื่อคุณเพิ่มลงใน X คุณควรเพิ่มหมายเลขเวอร์ชันของ X เช่น X-1.2
จากนั้น X-1.2 ควรได้รับการติดตั้ง / ปรับใช้และคุณควรเปลี่ยนการพึ่งพาโปรเจ็กต์ของคุณบน X เพื่อขึ้นอยู่กับ X-1.2 เวอร์ชันใหม่


6

หากคุณทราบ ID กลุ่มXคุณสามารถใช้คำสั่งนี้เพื่อดาวน์โหลดซ้ำทั้งหมดXและเป็นการอ้างอิง

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

มันทำเช่นเดียวกับคำตอบอื่น ๆ ที่เสนอให้ใช้dependency:purge-local-repositoryแต่จะลบและดาวน์โหลดทุกอย่างที่เกี่ยวข้องXอีกครั้งเท่านั้น


4

หากคุณต้องการบังคับให้ดาวน์โหลดการอ้างอิงทั้งหมดจริงๆคุณสามารถลองเริ่มต้นที่เก็บ maven ใหม่ทั้งหมด เช่นเดียวกับในบทความนี้ที่อธิบายไว้แล้วคุณสามารถใช้:

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

3

เพียงแค่ลบ ~ / .m2 / repository ..... / actual_path ซึ่ง LOC ที่ไม่ถูกต้องมาถึงเนื่องจากบังคับให้ดาวน์โหลดไฟล์ jar ที่ถูกลบอีกครั้ง อย่าลบโฟลเดอร์ที่เก็บทั้งหมดแทนที่จะลบโฟลเดอร์เฉพาะจากจุดที่เกิดข้อผิดพลาด


0

การลบ~/.m2/repositoryจะช่วยแก้ปัญหาของคุณได้ แต่ถ้าคุณยังคงต้องการให้ของเก่า~/.m2/repositoryคุณสามารถเปลี่ยนเส้นทางท้องถิ่นของ maven ได้ชั่วคราว

หากคุณกำลังทำงานกับ IntelliJ เพียงไปที่การตั้งค่า Maven และเปลี่ยนเส้นทางที่เก็บในเครื่องไปที่อื่น คุณอาจต้องติ๊กช่องทำเครื่องหมายลบล้างใกล้ ๆ

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


-1

คำตอบส่วนใหญ่ที่ให้ไว้ข้างต้นจะช่วยแก้ปัญหาได้

แต่ถ้าคุณใช้ IntelliJ และต้องการแก้ไขให้คุณโดยอัตโนมัติให้ไปที่การตั้งค่า Maven

สร้างดำเนินการปรับใช้ -> สร้างเครื่องมือ -> Maven

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

ปิดการทำงานแบบออฟไลน์

เปิดใช้งานอัปเดตสแนปชอตเสมอ (สลับเมื่อจำเป็น)


1
ฉันจะขอบคุณมากถ้าคุณสามารถแบ่งปันเหตุผลของการโหวตลดลงได้ในขณะที่คุณอยู่ที่นั่น ขอบคุณ.
Abhishek Nandgaonkar

1
สันนิษฐานว่าเป็นเพราะสแน็ปช็อตไม่ใช่การเผยแพร่ดังนั้นจึงไม่สามารถแก้ปัญหาได้
soru

-2

ไปที่สร้างพา ธ ... ลบไลบรารี maven ที่มีอยู่ที่คุณเพิ่ม ... คลิกเพิ่มไลบรารี ... คลิก maven จัดการการอ้างอิง ... จากนั้นคลิกการตั้งค่าโปรเจ็กต์ maven ... ตรวจสอบกล่องกาเครื่องหมายแก้ไขการพึ่งพา maven .. มันจะดาวน์โหลดทั้งหมด การพึ่งพา maven


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