อะไรคือความแตกต่างระหว่าง“ mvn deploy” กับ repo ในเครื่องและ“ mvn install”?


95

ทีมของฉันใช้ repo maven ทีมภายในที่แชร์จากเซิร์ฟเวอร์การพัฒนาโดยใช้ Apache เรายังเรียกใช้เซิร์ฟเวอร์ Continuum CI บนเครื่องเดียวกัน Maven builds ใน Continuum ทำงานโดยมีเป้าหมาย "install" ซึ่งคัดลอกอาร์ติแฟกต์สุดท้ายลงในไดเร็กทอรีที่แชร์โดยตรง

คำถามคืออะไรคือความแตกต่างระหว่างการเพิ่มไฟล์ไปยัง repo ที่ใช้ร่วมกันโดยใช้mvn installและการใช้เป้าหมายการปรับใช้ (ปลั๊กอิน mvn-deploy)?

สำหรับฉันแล้วดูเหมือนว่าการใช้mvn deployจะสร้างความยุ่งยากในการกำหนดค่าเพิ่มเติม แต่ฉันได้อ่านที่ไหนสักแห่งว่าการติดตั้งไฟล์ใน repo ที่ใช้ร่วมกันเป็นความคิดที่ไม่ดีด้วยเหตุผลบางประการที่เกี่ยวข้องกับการทำงานภายในของ maven

อัปเดต: ฉันได้รับความแตกต่างระหว่างฟังก์ชันdeployและinstall; จริงๆแล้วฉันสนใจรายละเอียดระดับต่ำในแง่ของไฟล์ที่สร้างขึ้นใน maven repo

คำตอบ:


168

เคนเป็นคำถามที่ดี ฉันควรอธิบายให้ชัดเจนมากกว่านี้ในThe Definitive Guideเกี่ยวกับความแตกต่าง "ติดตั้ง" และ "ปรับใช้" ให้บริการสองวัตถุประสงค์ที่แตกต่างกันในบิลด์ "install" หมายถึงกระบวนการติดตั้งสิ่งประดิษฐ์ในที่เก็บในเครื่องของคุณ "ปรับใช้" หมายถึงกระบวนการปรับใช้สิ่งประดิษฐ์กับที่เก็บระยะไกล

ตัวอย่าง:

  1. เมื่อฉันรันโปรเจ็กต์หลายโมดูลขนาดใหญ่บนเครื่องฉันมักจะเรียกใช้ "mvn install" สิ่งนี้จะติดตั้งสิ่งประดิษฐ์ซอฟต์แวร์ไบนารีที่สร้างขึ้นทั้งหมด (โดยปกติคือ JAR) ในที่เก็บในเครื่องของฉัน จากนั้นเมื่อฉันสร้างแต่ละโมดูลในบิลด์ Maven จะดึงการอ้างอิงจากที่เก็บในเครื่อง

  2. เมื่อถึงเวลาต้องปรับใช้สแนปชอตหรือรีลีสฉันจะเรียกใช้ "mvn deploy" การรันสิ่งนี้จะพยายามปรับใช้ไฟล์ไปยังที่เก็บระยะไกลหรือเซิร์ฟเวอร์ โดยปกติฉันจะปรับใช้กับตัวจัดการที่เก็บเช่นNexus

เป็นเรื่องจริงที่การรัน "ปรับใช้" จะต้องมีการกำหนดค่าเพิ่มเติมคุณจะต้องจัดหาส่วน distributionManagement ใน POM ของคุณ


@ ทิมแล้วข้อดีของมันmvn deployคืออะไร? มีประโยชน์อะไรบ้างสำหรับการกำหนดค่าเพิ่มเติมที่จำเป็นในตอนแรก?
Geek

4
การปรับใช้ถูกออกแบบมาเพื่อปรับใช้อาร์ติแฟกต์กับเซิร์ฟเวอร์ระยะไกล เป็นกรณีการใช้งานที่แตกต่างจากการติดตั้งอย่างสิ้นเชิง
Tim O'Brien

17

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

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

อาจมีความสับสนในการ "ติดตั้ง" ไปยังเซิร์ฟเวอร์ CI ที่ติดตั้งลงในที่เก็บในเครื่องซึ่งคุณในฐานะผู้ใช้กำลังแชร์อยู่


4

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

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

ในกรณีของคุณมันก็ดูเหมือนว่า "ติดตั้ง" ถูกนำมาใช้เพื่อให้การจัดการของการใช้งานได้ง่ายขึ้นตั้งแต่ repo ท้องถิ่นของ CI คือซื้อคืนภาคที่ใช้ร่วมกัน หาก CI อยู่ในกล่องอื่นก็จะต้องใช้เป้าหมาย "ปรับใช้"

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