“ แพคเกจที่สะอาด mvn” และ“ การติดตั้งที่สะอาด mvn” แตกต่างกันอย่างไร?


277

อะไรคือความแตกต่างระหว่างmvn clean packageและmvn clean install? เมื่อฉันรันทั้งสองคำสั่งเหล่านี้พวกเขาทั้งคู่ดูเหมือนจะทำสิ่งเดียวกัน



3
หนึ่งแพ็กเกจ (สร้างเป็นเป้าหมาย) และติดตั้ง (แพ็กเกจและวางไว้ในที่เก็บคุณ) คุณต้องทำภายหลังหากคุณต้องการใช้เวอร์ชันนี้ในโมดูลอื่น
Peter Lawrey

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

คำตอบ:


371

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

packageจะรวบรวมรหัสของคุณและบรรจุมัน ตัวอย่างเช่นถ้า pom ของคุณบอกว่าโครงการคือ jar มันจะสร้าง jar ให้คุณเมื่อคุณจัดทำมันและวางไว้ที่อื่นในไดเรกทอรีเป้าหมาย (โดยค่าเริ่มต้น)

installจะคอมไพล์และแพ็คเกจ แต่มันก็จะนำแพคเกจในพื้นที่เก็บข้อมูลในพื้นที่ของคุณ สิ่งนี้จะทำให้โครงการอื่น ๆ สามารถอ้างถึงและคว้ามันจากที่เก็บในพื้นที่ของคุณ

เอกสาร


เหตุใด mvn จึงติดตั้งเร็วกว่าแพ็คเกจ mvn
แปลที่สูญหาย

9
@SharadHolani เพราะงานสร้างนั้นเพิ่มขึ้น ไม่ได้เร็วกว่าmvn clean install mvn package
OrangeDog

สำหรับโครงการของฉันชุดประกอบ mvn: ชุดเดียวซึ่งสร้าง jar ไขมันใช้เวลานานกว่าการติดตั้ง mvn ทำแพคเกจและติดตั้งทั้งสองขวดไขมันสร้างเทียบเท่า?
สูญเสียการแปล

1
@RakeshYadav ใช่แล้ว
Daniel Kaplan

116

ทำความสะอาดอะไรบ้าง (โดยทั่วไปในทั้งสองคำสั่ง) - ลบไฟล์ทั้งหมดที่สร้างโดยบิลด์ก่อนหน้า


เมื่อมาถึงความแตกต่างระหว่างแพ็คเกจคำสั่งและการติดตั้งคุณต้องเข้าใจวงจรชีวิตของโครงการ maven ก่อน


เหล่านี้เป็นขั้นตอนวงจรชีวิตเริ่มต้นใน Maven

  • ตรวจสอบ - ตรวจสอบความถูกต้องของโครงการและข้อมูลที่จำเป็นทั้งหมดมีอยู่
  • รวบรวม - รวบรวมซอร์สโค้ดของโครงการ
  • ทดสอบ - ทดสอบซอร์สโค้ดที่คอมไพล์โดยใช้เฟรมเวิร์กการทดสอบหน่วยที่เหมาะสม การทดสอบเหล่านี้ไม่ควรต้องการรหัสที่จะบรรจุหรือปรับใช้
  • package - นำโค้ดที่คอมไพล์แล้วมาบรรจุในรูปแบบที่แจกจ่ายได้เช่น JAR
  • ตรวจสอบ - เรียกใช้การตรวจสอบใด ๆ เกี่ยวกับผลของการทดสอบการรวมเพื่อให้แน่ใจว่าเป็นไปตามเกณฑ์คุณภาพ
  • ติดตั้ง - ติดตั้งแพคเกจลงในพื้นที่เก็บข้อมูลในท้องถิ่นเพื่อใช้เป็นอ้างอิงในโครงการอื่น ๆ ในพื้นที่
  • ปรับใช้ - ทำในสภาพแวดล้อมการสร้างคัดลอกแพ็กเกจสุดท้ายไปยังที่เก็บระยะไกลสำหรับการแชร์กับนักพัฒนาและโครงการอื่น ๆ

Maven ทำงานอย่างไรถ้าคุณเรียกใช้คำสั่งสำหรับเฟสใด ๆ ของรอบการทำงานมันจะประมวลผลแต่ละช่วงวงจรชีวิตเริ่มต้นตามลำดับก่อนดำเนินการคำสั่งเอง

คำสั่งของการดำเนินการ

ตรวจสอบ >> คอมไพล์ >> ทดสอบ (เลือกได้) >> แพ็คเกจ >> ตรวจสอบ >> ติดตั้ง >> ปรับใช้

ดังนั้นเมื่อคุณรันแพ็คเกจคำสั่งmvnมันจะรันคำสั่งสำหรับเฟสวัฏจักรชีวิตทั้งหมดจนถึงแพ็คเกจ

ตรวจสอบ >> คอมไพล์ >> ทดสอบ (อุปกรณ์เสริม) >> แพ็คเกจ

และสำหรับการติดตั้ง mvnมันจะรันคำสั่งสำหรับทุกช่วงอายุการใช้งานจนถึงการติดตั้งซึ่งรวมถึงแพ็คเกจด้วย

ตรวจสอบ >> คอมไพล์ >> ทดสอบ (อุปกรณ์เสริม) >> แพ็คเกจ >> ตรวจสอบ >> ติดตั้ง


ดังนั้นสิ่งที่มีความหมายอย่างมีประสิทธิภาพคือคำสั่งติดตั้งทำทุกอย่างที่คำสั่งแพ็คเกจทำและอื่น ๆ (ติดตั้งแพ็กเกจลงในที่เก็บโลคัลสำหรับใช้เป็นการอ้างอิงในโปรเจ็กต์อื่น ๆ แบบโลคัล)

ที่มา: การอ้างอิงวงจรชีวิต Maven


1
ควรทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับได้ สิ่งนี้กำหนดและช่วยให้ OP เข้าใจอย่างชัดเจนว่าขั้นตอนต่าง ๆ ของวงจรชีวิต Maven และทำไม mvn ติดตั้งจึงมีแพ็คเกจ mvn แต่ไม่ใช่วิธีอื่น ๆ
Jasmeet Singh

1
Maven สั้น ๆ ดี!
CodeSlave

19

แพ็คเกจจะสร้าง Jar / war ตามไฟล์ POM การติดตั้งจะติดตั้งไฟล์ jar ที่สร้างไปยังที่เก็บในเครื่องสำหรับการอ้างอิงอื่น ๆ ถ้ามี

เฟสการติดตั้งมาหลังจากเฟสแพ็กเกจ


แพ็คเกจแรกจะเกิดขึ้นจากนั้นแพ็คเกจ (jar / war) จะติดตั้ง
Abdul Gafoor

1
"ติดตั้งเฟสตามเฟสแพ็คเกจ" วิธีที่ใช้คำในปัจจุบันเป็นแบบย้อนกลับ "ตามด้วย" หมายถึง "หลัง"
Charles Wood

11

แพ็คเกจและการติดตั้งเป็นขั้นตอนต่าง ๆ ในวงจรการสร้าง maven ระยะแพคเกจจะดำเนินการทุกขั้นตอนก่อนที่จะ & มันจะหยุดกับบรรจุภัณฑ์โครงการเป็นขวด เฟสการติดตั้งในทำนองเดียวกันจะดำเนินการเฟสก่อนหน้าทั้งหมดและในที่สุดก็ติดตั้งโครงการในพื้นที่สำหรับโครงการขึ้นอยู่กับอื่น ๆ

สำหรับการทำความเข้าใจวงจรชีวิตของ Maven โปรดไปที่ลิงค์ต่อไปนี้https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html


1
คุณหมายถึงอะไรโดย "และในที่สุดก็ติดตั้งโครงการในประเทศสำหรับขึ้นอยู่กับโครงการอื่น ๆ"
อรุณ Gowda

2
@ArunGowda มันหมายถึงใน. m2 ซึ่งถูกสร้างขึ้นในระบบของคุณเมื่อติดตั้ง maven จะถูกเพิ่มเข้าไปในโครงการที่คุณบรรจุภัณฑ์และจะพร้อมใช้งานสำหรับโครงการอื่น ๆ ที่ขึ้นต่อกัน
JAVA

รูปภาพคือ 1,000 คำทุกคนมีไดอะแกรมใช่ไหม

@MrCholo mvn ติดตั้งจะใส่ jar / war เข้าไปใน repo maven ของคุณ สถานที่ที่เก็บอ้างอิง Maven ทั้งหมดของคุณมักจะ ~ / .m2
brt

6

packageจะเพิ่มแพคเกจjarหรือwarที่คุณ targetโฟลเดอร์เราสามารถตรวจสอบได้เมื่อเราล้างโฟลเดอร์เป้าหมาย (ใช้ mvn clean) mvn packageและเรียกใช้
installจะทำทุกสิ่งที่packageทำได้นอกจากนี้มันจะเพิ่มแพ็คเกจjarหรือwarในที่เก็บภายในเช่นกัน เราสามารถยืนยันได้โดยการตรวจสอบใน.m2โฟลเดอร์ของคุณ

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