เราสามารถเริ่มสร้าง maven จากจุดที่มันล้มเหลวได้หรือไม่


91

สมมติว่าฉันกำลังสร้างเต็มรูปแบบในโครงการขนาดใหญ่ของฉันซึ่งมี 7 โมดูลและในโมดูลที่ 6 การสร้างล้มเหลวเนื่องจากการทดสอบล้มเหลว มีวิธีใดบ้างที่ฉันสามารถเริ่มการสร้างจากจุดที่ล้มเหลว

คำตอบ:


135

คุณสามารถสร้างต่อจากโมดูลที่ 6 โดยใช้-rfหรือ--resume-from:

-rf, --resume-from
          ดำเนินการต่อเครื่องปฏิกรณ์จากโครงการที่ระบุ

ดูตัวเลือกเครื่องปฏิกรณ์ขั้นสูงสำหรับรายละเอียด


ขอบคุณสำหรับสิ่งนี้ฉันจะให้มัน
Shekhar

1
นี่เป็นสิ่งที่ดีสำหรับโครงการย่อยเพียงแค่ใช้subproject/subsubprojectเป็นพารามิเตอร์
akostadinov

13
ตัวอย่าง:maven -rf <module name> clean install
Zoltán

9
นี้จะทำงานให้ฉันเมื่อฉัน prepended mvn -rf :moduleName installชื่อโมดูลที่มีลำไส้ใหญ่เช่น (ไม่แน่ใจว่าทำไมต้องใช้ลำไส้ใหญ่ แต่ดูเหมือนว่าจะเป็นอย่างน้อยก็สำหรับการตั้งค่าของฉัน)
Steve Chambers

3
ดูเหมือนว่าสิ่งนี้จะใช้งานได้ก็ต่อเมื่อการสร้างเริ่มต้นของคุณมีinstallเป้าหมายในนั้นเนื่องจากการสร้างต่อจะสามารถรับสิ่งประดิษฐ์ที่สร้างขึ้นแล้วจากที่เก็บ Maven ในพื้นที่ของคุณเพื่อแก้ไขการอ้างอิง ฉันคิดว่ามันเป็นวิธีปฏิบัติที่ไม่ดีในการเรียกใช้งานinstallบิลด์ในขณะที่คุณทำให้พื้นที่เก็บข้อมูลในเครื่องของคุณยุ่งเหยิงด้วยสแนปช็อตและคุณอาจจะขึ้นอยู่กับสแนปชอตที่เก่ากว่าที่คุณคาดไว้ ดูเหมือนว่าการสร้างที่คุณpackageทำเท่านั้นและไม่installใช้-rfไม่ใช่ตัวเลือก: คุณจะต้องสร้างทั้งชุด
Frans


9

คุณสามารถดำเนินการสร้างต่อจากโมดูลใดก็ได้ที่คุณต้องการโดยใช้-rfคำสั่ง ตัวอย่างเช่นหากบิลด์ของคุณล้มเหลวใน myproject-proxy คุณสามารถใช้คำสั่งต่อไปนี้:

mvn -rf myproject-proxy clean install

ฉันต้องใส่โคลอนเพื่อให้มันทำงานเช่น -rf: yourModule ดูคำตอบอื่น ๆ
Gapmeister66


0

ตาม " มีอะไรใหม่ใน Maven 4 " (พฤศจิกายน 2020) จากMaarten Muldersเร็ว ๆ นี้คุณจะสามารถทำได้ด้วย Maven 4.0.0 ที่กำลังจะมาถึง (Q1 2021)

พิจารณาโครงสร้างโครงการตัวอย่างนี้:

https://maarten.mulders.it/2020/11/whats-new-in-maven-4/example-project_hu981f14f09d98e6139a671549a98c2057_118421_1037x555_resize_box_2.png

ใช้ --also-make ร่วมกับ --resume-from

การปรับปรุงเครื่องปฏิกรณ์ครั้งแรกคือการแก้ไขข้อบกพร่อง ก่อนหน้านี้หากสร้างโครงการของคุณล้มเหลวในโมดูลลูกค้าคุณจะได้รับคำแนะนำที่จะกลับมาสร้างด้วย
--resume-from :clientแต่ถ้าคุณทำอย่างนั้นการสร้างจะพังอีกครั้งคราวนี้เป็นเพราะ Maven ไม่พบโมดูลทั่วไป
คุณอาจคิดว่าการเพิ่ม--also-make(หรือ-am) จะช่วยแก้ปัญหานี้ได้ แต่จะไม่ทำเช่นนั้น นี้ข้อผิดพลาดที่ยาวนานไม่ได้อยู่ที่นั่น

หากคุณใช้ร่วม--resume-from :clientกับ--also-makeเครื่องปฏิกรณ์จะค้นหาโมดูลทั้งหมดในโปรเจ็กต์ของคุณและสร้างต่อตามที่คุณร้องขอ

ดำเนินการต่อโดยอัตโนมัติจากจุดสุดท้ายของความล้มเหลว

แต่โอกาสที่คุณจะไม่สังเกตเห็น สิ่งที่มี--resume-from :clientคือทำให้คุณคิดมากเกินความจำเป็น

ด้วย Maven 4 คุณสามารถทำให้ชีวิตของคุณง่ายขึ้นและใช้งาน--resumeได้หรือเรียก-rสั้น ๆ โดยอัตโนมัติจะกลับมาสร้างจากโมดูลที่ล้มเหลวที่ผ่านมา

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

การรวมคุณสมบัติทั้งสองนี้อาจช่วยปรับปรุงเวลาที่คุณต้องการสร้างโครงการซอฟต์แวร์ขนาดใหญ่สำหรับองค์กรของคุณได้!


สวัสดี @VonC ฉันถามคำถามนอกหัวข้อ ฉันต้องการทราบว่าคุณบำรุงรักษาเครื่องนุ่มใด ฉันเคยเห็น jira, git, maven และอื่น ๆ ในหน้าโปรไฟล์ของคุณคุณเป็นผู้สนับสนุนหรือไม่? แล้วคุณรู้มากเกี่ยวกับคอมไพล์ได้อย่างไร? และคุณสร้างมันขึ้นมา? ฉันอยากรู้อยากเห็น ...
nikhil swami

1
@nikhilswami ฉันมีเครื่องมือบางอย่างที่ฉันใช้ในที่ทำงาน ( github.com/VonC ) และฉันได้เรียนรู้ Git โดยการตอบคำถามใน Stack Overflow ย้อนกลับไปในปี 2009 ปัจจุบันฉันสนับสนุนทีมนักพัฒนาโดยใช้ Git อย่างจริงจังดังนั้นฉันจึงเรียนรู้วิธีนั้นต่อไปเช่นกัน
VonC

-1

ไวยากรณ์: 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
Gili

-2

คุณสามารถรันบิวด์ของโมดูล 6 แยกกันเพื่อดูว่ามันยังล้มเหลวหรือไม่ แต่ฉันกลัวว่าคุณจะต้องสร้างโมดูลทั้งหมดตั้งแต่เริ่มต้นเมื่อคุณต้องการรันบิลด์ "ใหญ่"

แก้ไข: แน่นอนว่าบิลด์ที่ตามมาจะเร็วขึ้นเนื่องจากโค้ดของโมดูล 1-5 ได้รับการคอมไพล์แล้วเว้นแต่คุณจะรัน clean เป็นส่วนหนึ่งของบิลด์ของคุณ


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