ฉันยังใหม่กับ Maven ฉันมีโปรเจ็กต์เว็บที่ใช้ Java ซึ่งมีการกำหนดค่า maven ใน MyEclipse ของฉัน
ตอนนี้ถ้าฉันแก้ไขไฟล์ java ฉันต้องทำRun as -> Mvn install
หรือMvn package
?
ฉันยังใหม่กับ Maven ฉันมีโปรเจ็กต์เว็บที่ใช้ Java ซึ่งมีการกำหนดค่า maven ใน MyEclipse ของฉัน
ตอนนี้ถ้าฉันแก้ไขไฟล์ java ฉันต้องทำRun as -> Mvn install
หรือMvn package
?
คำตอบ:
จากhttp://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: นำโค้ดที่คอมไพล์แล้วมาทำแพ็กเกจในรูปแบบที่แจกจ่ายได้เช่น JAR
install
: ติดตั้งแพ็กเกจลงในที่เก็บโลคัลเพื่อใช้เป็นการอ้างอิงในโปรเจ็กต์อื่นในเครื่อง
ดังนั้นคำตอบสำหรับคำถามของคุณคือขึ้นอยู่กับว่าคุณต้องการติดตั้งลงใน repo ในพื้นที่ของคุณหรือไม่ การติดตั้งจะเรียกใช้แพ็กเกจเนื่องจากสูงกว่าในสแต็กเฟสเป้าหมาย
deploy
ทำ หากคุณแทนที่ด้วยpackage
จะไม่สามารถใช้งานได้กับ Nexus
mvn install
เป็นตัวเลือกที่ใช้บ่อยที่สุด
mvn package
ไม่ค่อยมีการใช้งานเฉพาะในกรณีที่คุณกำลังแก้ไขปัญหาบางอย่างกับกระบวนการสร้าง maven
ดู: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
โปรดทราบว่าmvn package
จะสร้างเฉพาะไฟล์ jar
mvn install
จะทำเช่นนั้นและติดตั้งไฟล์ jar (และ class เป็นต้น) ในตำแหน่งที่เหมาะสมหากโค้ดอื่นขึ้นอยู่กับ jar เหล่านั้น
ฉันมักจะทำmvn clean install
; ซึ่งจะลบtarget
ไดเร็กทอรีและสร้างไหทั้งหมดใหม่ในตำแหน่งนั้น
การทำความสะอาดจะช่วยให้มีสิ่งของที่ไม่จำเป็นหรือนำออกซึ่งบางครั้งอาจกีดขวางได้
แทนที่จะดีบัก (บางครั้ง) เพียงแค่เริ่มต้นใหม่ตลอดเวลา
จากการอ้างอิงวงจรการใช้งานการติดตั้งจะเรียกใช้การทดสอบการรวมของโปรเจ็กต์แพ็กเกจจะไม่
ถ้าคุณต้องการจริงๆที่จะได้ติดตั้งสิ่งประดิษฐ์ที่สร้างขึ้นใช้อย่างน้อยตรวจสอบ
นอกจากนี้คุณควรทราบว่าหากโครงการของคุณประกอบด้วยโมดูลหลายโมดูลซึ่งขึ้นอยู่กับกันและกันคุณควรใช้ "ติดตั้ง" แทน "แพ็คเกจ" มิฉะนั้นการสร้างของคุณจะล้มเหลวทำให้เมื่อคุณใช้คำสั่งติดตั้งโมดูล A จะถูกบรรจุ และปรับใช้กับที่เก็บในเครื่องจากนั้นหากโมดูล B ต้องการโมดูล A เป็นการอ้างอิงก็สามารถเข้าถึงได้จากที่เก็บในเครื่อง
หากคุณไม่ได้ใช้ที่เก็บระยะไกล (เช่นโรงงานประดิษฐ์) ให้ใช้แบบเก่า:
mvn clean install
หัวข้อค่อนข้างเก่า แต่ AFAIK หากคุณเรียกใช้ที่เก็บของคุณเอง (เช่นกับโรงงานประดิษฐ์) เพื่อแบ่งปันโถในทีมของคุณคุณอาจต้องการใช้
mvn clean deploy
แทน.
ด้วยวิธีนี้เซิร์ฟเวอร์การรวมต่อเนื่องของคุณสามารถมั่นใจได้ว่าการอ้างอิงทั้งหมดถูกผลักเข้าไปในที่เก็บระยะไกลของคุณอย่างถูกต้อง หากคุณพลาดหนึ่งรายการ mvn จะไม่สามารถค้นหาได้ในที่เก็บ CI local m2 ของคุณ
แพ็กเกจ - รับโค้ดที่คอมไพล์และแพ็กเกจในรูปแบบที่แจกจ่ายได้เช่นไฟล์ JAR หรือ WAR ติดตั้ง - ติดตั้งแพ็กเกจลงในที่เก็บในเครื่องเพื่อใช้เป็นการอ้างอิงในโปรเจ็กต์อื่นในเครื่อง
เหมาะสมวิธีคือmvn package
ถ้าคุณไม่ได้ทำสิ่งที่ถูกต้องสำหรับส่วนหลักของการสร้างของคุณแล้วควรจะมีไม่จำเป็นต้องติดตั้งแพคเกจของคุณในพื้นที่เก็บข้อมูลท้องถิ่น
นอกจากนี้หากคุณใช้ Travis คุณสามารถ "แคช" การอ้างอิงของคุณได้เนื่องจากจะไม่แตะต้อง$HOME.m2/repository
หากคุณใช้แพ็คเกจสำหรับโครงการของคุณเอง
ในการปฏิบัติจริงหากคุณพยายามที่จะทำmvn site
คุณมักจะต้องทำmvn install
ก่อน มีข้อบกพร่องมากเกินไปsite
หรือมีปลั๊กอินที่ดูแลไม่ดีจำนวนมาก
ขึ้นอยู่กับสิ่งที่คุณพยายามทำหลังจากเปลี่ยนไฟล์ Java จนกว่าคุณจะต้องการทดสอบกระบวนการ maven คุณไม่จำเป็นต้องทำอะไรเลย Eclipse / MyEclipse จะสร้างสิ่งที่จำเป็นและวางเอาต์พุตในตำแหน่งที่เหมาะสมภายในโปรเจ็กต์ของคุณ คุณยังสามารถเรียกใช้หรือปรับใช้งานได้ (เช่นโครงการเว็บ) โดยที่คุณไม่จำเป็นต้องทำอะไรกับ maven อย่างชัดเจน ในท้ายที่สุดในการติดตั้งโครงการของคุณในที่เก็บ maven คุณจะต้องทำการติดตั้ง maven คุณอาจมีเป้าหมาย maven อื่น ๆ ที่คุณต้องการดำเนินการซึ่ง MyEclipse จะไม่ทำโดยอัตโนมัติ
อย่างที่บอกมันขึ้นอยู่กับว่าคุณอยากทำอะไร