สมมติว่าฉันกำลังสร้างเต็มรูปแบบในโครงการขนาดใหญ่ของฉันซึ่งมี 7 โมดูลและในโมดูลที่ 6 การสร้างล้มเหลวเนื่องจากการทดสอบล้มเหลว มีวิธีใดบ้างที่ฉันสามารถเริ่มการสร้างจากจุดที่ล้มเหลว
สมมติว่าฉันกำลังสร้างเต็มรูปแบบในโครงการขนาดใหญ่ของฉันซึ่งมี 7 โมดูลและในโมดูลที่ 6 การสร้างล้มเหลวเนื่องจากการทดสอบล้มเหลว มีวิธีใดบ้างที่ฉันสามารถเริ่มการสร้างจากจุดที่ล้มเหลว
คำตอบ:
คุณสามารถสร้างต่อจากโมดูลที่ 6 โดยใช้-rf
หรือ--resume-from
:
-rf, --resume-from
ดำเนินการต่อเครื่องปฏิกรณ์จากโครงการที่ระบุ
ดูตัวเลือกเครื่องปฏิกรณ์ขั้นสูงสำหรับรายละเอียด
subproject/subsubproject
เป็นพารามิเตอร์
maven -rf <module name> clean install
mvn -rf :moduleName install
ชื่อโมดูลที่มีลำไส้ใหญ่เช่น (ไม่แน่ใจว่าทำไมต้องใช้ลำไส้ใหญ่ แต่ดูเหมือนว่าจะเป็นอย่างน้อยก็สำหรับการตั้งค่าของฉัน)
install
เป้าหมายในนั้นเนื่องจากการสร้างต่อจะสามารถรับสิ่งประดิษฐ์ที่สร้างขึ้นแล้วจากที่เก็บ Maven ในพื้นที่ของคุณเพื่อแก้ไขการอ้างอิง ฉันคิดว่ามันเป็นวิธีปฏิบัติที่ไม่ดีในการเรียกใช้งานinstall
บิลด์ในขณะที่คุณทำให้พื้นที่เก็บข้อมูลในเครื่องของคุณยุ่งเหยิงด้วยสแนปช็อตและคุณอาจจะขึ้นอยู่กับสแนปชอตที่เก่ากว่าที่คุณคาดไว้ ดูเหมือนว่าการสร้างที่คุณpackage
ทำเท่านั้นและไม่install
ใช้-rf
ไม่ใช่ตัวเลือก: คุณจะต้องสร้างทั้งชุด
นี่คือตัวอย่าง
mvn clean install -rf :your-module
คุณสามารถดำเนินการสร้างต่อจากโมดูลใดก็ได้ที่คุณต้องการโดยใช้-rf
คำสั่ง ตัวอย่างเช่นหากบิลด์ของคุณล้มเหลวใน myproject-proxy คุณสามารถใช้คำสั่งต่อไปนี้:
mvn -rf myproject-proxy clean install
ดูสรุป maven และคุณจะเห็นโมดูลที่ดำเนินการและจุดที่ maven หยุดทำงาน จากนั้นลองทำสิ่งนี้:
mvn clean install-Dmaven.test.skip=true -rf :yourModule
ตาม " มีอะไรใหม่ใน Maven 4 " (พฤศจิกายน 2020) จากMaarten Muldersเร็ว ๆ นี้คุณจะสามารถทำได้ด้วย Maven 4.0.0 ที่กำลังจะมาถึง (Q1 2021)
พิจารณาโครงสร้างโครงการตัวอย่างนี้:
ใช้ --also-make ร่วมกับ --resume-from
การปรับปรุงเครื่องปฏิกรณ์ครั้งแรกคือการแก้ไขข้อบกพร่อง ก่อนหน้านี้หากสร้างโครงการของคุณล้มเหลวในโมดูลลูกค้าคุณจะได้รับคำแนะนำที่จะกลับมาสร้างด้วย
--resume-from :client
แต่ถ้าคุณทำอย่างนั้นการสร้างจะพังอีกครั้งคราวนี้เป็นเพราะ Maven ไม่พบโมดูลทั่วไป
คุณอาจคิดว่าการเพิ่ม--also-make
(หรือ-am
) จะช่วยแก้ปัญหานี้ได้ แต่จะไม่ทำเช่นนั้น นี้ข้อผิดพลาดที่ยาวนานไม่ได้อยู่ที่นั่นหากคุณใช้ร่วม
--resume-from :client
กับ--also-make
เครื่องปฏิกรณ์จะค้นหาโมดูลทั้งหมดในโปรเจ็กต์ของคุณและสร้างต่อตามที่คุณร้องขอ
ดำเนินการต่อโดยอัตโนมัติจากจุดสุดท้ายของความล้มเหลว
แต่โอกาสที่คุณจะไม่สังเกตเห็น สิ่งที่มี
--resume-from :client
คือทำให้คุณคิดมากเกินความจำเป็นด้วย Maven 4 คุณสามารถทำให้ชีวิตของคุณง่ายขึ้นและใช้งาน
--resume
ได้หรือเรียก-r
สั้น ๆ โดยอัตโนมัติจะกลับมาสร้างจากโมดูลที่ล้มเหลวที่ผ่านมาแต่ยังมีอีก! บางทีคุณอาจจะใช้คู่ขนานสร้าง สร้างลำดับหนึ่งของโมดูลสำเร็จในขณะที่การสร้างลำดับของโมดูลอื่นพัง
ในสถานการณ์นั้นการใช้-r
จะข้ามโมดูลที่ประสบความสำเร็จในโครงสร้างก่อนหน้านี้การรวมคุณสมบัติทั้งสองนี้อาจช่วยปรับปรุงเวลาที่คุณต้องการสร้างโครงการซอฟต์แวร์ขนาดใหญ่สำหรับองค์กรของคุณได้!
ไวยากรณ์: mvn -rf modulename mavengoal หรือ mvn --resume-from modulename mavengoal
เช่น mvn -rf admin-module clean install หรือ mvn - resume-from admin-module clean install
-rf
ไม่สั้นสำหรับ--remove-from
. มันย่อมาจาก--resume-from
คุณสามารถรันบิวด์ของโมดูล 6 แยกกันเพื่อดูว่ามันยังล้มเหลวหรือไม่ แต่ฉันกลัวว่าคุณจะต้องสร้างโมดูลทั้งหมดตั้งแต่เริ่มต้นเมื่อคุณต้องการรันบิลด์ "ใหญ่"
แก้ไข: แน่นอนว่าบิลด์ที่ตามมาจะเร็วขึ้นเนื่องจากโค้ดของโมดูล 1-5 ได้รับการคอมไพล์แล้วเว้นแต่คุณจะรัน clean เป็นส่วนหนึ่งของบิลด์ของคุณ