วิธีลบไฟล์ jar ออกจากที่เก็บ maven ในเครื่องซึ่งถูกเพิ่มด้วย install: install-file?


122
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

ฉันใช้คำสั่งด้านบนเพื่อติดตั้ง jar ในเครื่องลงใน repo ท้องถิ่นของ maven ตอนนี้ฉันได้รับการพึ่งพาจาก maven repo แล้ว ฉันต้องการลบสิ่งนี้ออกจาก repo ในเครื่อง วิธีทำความสะอาด?


คำตอบ:


107

แม้ว่าจะมีคำสั่ง maven ที่คุณสามารถดำเนินการเพื่อทำสิ่งนี้ได้ แต่การลบไฟล์ด้วยตนเองจากที่เก็บจะง่ายกว่า

แบบนี้บน windows Documents and Settings\your username\.m2หรือ$HOME/.m2บน Linux


10
ฉันจะลบเฉพาะไฟล์.m2/repository directory. เพื่อนร่วมงานได้ลบไดเร็กทอรี. m2 ก่อนหน้านี้และทำให้เกิดปัญหาเนื่องจากในโครงการของเราเราต้องแก้ไขsettings.xmlไฟล์
Tiris

7
โปรดทราบว่าเมื่อลบ.m2/repositoryไดเร็กทอรีคุณจะลบไฟล์ปลั๊กอิน maven ทั้งหมดด้วย ในขณะที่ใช้purge-local-repositoryคำสั่งคุณกำลังลบการอ้างอิงเท่านั้น
collinhaines

3
โครงสร้างไดเร็กทอรีภายใต้.m2/repositoryจัดระเบียบโดย Maven group ID ดังนั้นคุณสามารถลบไดเร็กทอรีย่อยที่เกี่ยวข้องกับอาร์ติแฟกต์ที่คุณต้องการลบได้
Kevin Krumwiede

124

แม้ว่าการลบไฟล์ด้วยตนเองจะใช้งานได้ แต่ก็มีวิธีอย่างเป็นทางการในการลบการอ้างอิงของโปรเจ็กต์ของคุณออกจากที่เก็บ (แคช) ในเครื่องของคุณและเลือกที่จะแก้ไขใหม่จากที่เก็บระยะไกล

เป้าหมายpurge-local-repositoryในปลั๊กอินการพึ่งพา Maven มาตรฐานจะลบการอ้างอิงที่ติดตั้งในเครื่องของโครงการนี้ออกจากแคชของคุณ อีกทางเลือกหนึ่งคุณสามารถแก้ไขใหม่ได้จากที่เก็บระยะไกลในเวลาเดียวกัน

ควรใช้เป็นส่วนหนึ่งของเฟสโปรเจ็กต์เนื่องจากใช้กับการอ้างอิงสำหรับโปรเจ็กต์ที่มี นอกจากนี้การอ้างอิงสกรรมกริยาจะถูกกำจัด (ในเครื่อง) เช่นกันโดยค่าเริ่มต้น

หากคุณต้องการลบอาร์ติแฟกต์เดียวออกจากแคชอย่างชัดเจนให้ใช้purge-local-repositoryกับmanualIncludeพารามิเตอร์ ตัวอย่างเช่นจากบรรทัดคำสั่ง:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

เอกสารประกอบหมายความว่าสิ่งนี้ไม่ได้ลบการอ้างอิงสกรรมกริยาตามค่าเริ่มต้น หากคุณใช้งานโดยใช้ตำแหน่งแคชที่ไม่ได้มาตรฐานหรือบนหลายแพลตฟอร์มสิ่งเหล่านี้เชื่อถือได้มากกว่าการลบไฟล์ "ด้วยมือ"

เอกสารฉบับเต็มอยู่ในMaven พึ่งพาปลั๊กอินข้อมูลจำเพาะ

หมายเหตุ : dependencyปลั๊กอินmaven เวอร์ชันเก่ามีmanual-purge-local-repositoryเป้าหมายซึ่งตอนนี้คือ (เวอร์ชัน 2.8) โดยนัยโดยการใช้manualInclude. ควรอ่านเอกสารประกอบสำหรับmanualIncludes(ที่มีs) ด้วย


ฉันไม่เชื่อว่าสิ่งนี้ใช้ได้กับ.jars ที่ไม่ได้ดาวน์โหลดจาก maven central หรือที่เก็บอื่น ๆ เมื่อฉันเรียกใช้คำสั่งนี้มันจะกำจัด.jars ทั้งหมดที่ดาวน์โหลดโดยอัตโนมัติ แต่เมื่อมันไปถึง.jars ที่ฉันติดตั้งด้วยตนเองมันจะแสดงข้อความแสดงข้อผิดพลาดนี้: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
stiemannkj1

3
อันที่จริงหลังจากตรวจสอบแล้วฉันก็รู้ว่ามันถอนการติดตั้ง.jarแต่ก็ยังคงแสดงข้อผิดพลาด ดังนั้นสำหรับ.jars ซึ่งได้รับการติดตั้งด้วยตนเองฉันอยากจะแนะนำตนเองลบมากกว่าการใช้วิธีนี้เพราะ Maven สร้างไฟล์บางลางเหมือนyourjar.jar.lastUpdatedและyourjar.pom.lastUpdatedที่คุณอาจจะต้องมีอยู่แล้วลบด้วยตนเอง แต่ถ้า maven จัดการการอ้างอิงทั้งหมดโดยอัตโนมัตินี่เป็นวิธีที่ยอดเยี่ยมในการถอนการติดตั้งการอ้างอิง
stiemannkj1

วิธีนี้ยังต้องใช้โครงการ maven เพื่อรันคำสั่ง ดูเหมือนจะไม่ได้ผลถ้าคุณรันคำสั่งติดตั้งที่ OP ระบุในบริบทของ say a Gradle build
jdonmoyer

19

อย่างน้อยในเวอร์ชัน maven ปัจจุบันคุณต้องเพิ่มสวิตช์ -DreResolve = false หากคุณต้องการลบการอ้างอิงออกจาก repo ในเครื่องของคุณโดยไม่ต้องดาวน์โหลดใหม่

mvn dependency:purge-local-repository -DreResolve=false

ลบการอ้างอิงโดยไม่ต้องดาวน์โหลดอีกครั้ง


ช่วยดู
หน่อยได้ไหม

12

ลบทุกสิ่ง (jar, pom.xml ฯลฯ ) ภายใต้~/.m2/repository/phonegap/1.1.0/ไดเร็กทอรีภายในของคุณหากคุณใช้ linux OS


เมื่อฉันลบ jar ด้วยวิธีนั้นมันจะ "ดาวน์โหลดใหม่" jar จากโฟลเดอร์เก่า อาจมีการอ้างอิงที่จำเป็นต้องลบออกด้วย
Antonio Sesto

0

ฉันประสบปัญหาเดียวกันทำตามคำแนะนำทั้งหมดข้างต้น แต่ไม่มีอะไรได้ผล ในที่สุดฉันก็ลบทั้งโฟลเดอร์. m2 และ. ivy และมันก็ใช้ได้สำหรับฉัน


-6
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard

5
คำตอบนี้อาจแก้ปัญหาได้หรือไม่ก็ได้ แต่การเพิ่มคำอธิบายให้กับคำตอบของคุณวิธีนี้อาจช่วยให้ OP เข้าใจสิ่งที่คุณพยายามแสดงให้เขาเห็น
Gerhard

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