Maven - ภาพรวม
Maven คืออะไร?
Maven เป็นเครื่องมือการจัดการโครงการและการทำความเข้าใจที่ช่วยให้นักพัฒนามีกรอบวงจรการสร้างที่สมบูรณ์ ทีมพัฒนาสามารถทำให้โครงสร้างพื้นฐานการสร้างของโปรเจ็กต์เป็นไปโดยอัตโนมัติได้ในเวลาไม่นานเนื่องจาก Maven ใช้เค้าโครงไดเร็กทอรีมาตรฐานและวงจรการสร้างเริ่มต้น
ในกรณีที่มีทีมพัฒนาหลายทีม Maven สามารถกำหนดวิธีการทำงานตามมาตรฐานได้ในเวลาอันสั้น เนื่องจากการตั้งค่าโครงการส่วนใหญ่นั้นเรียบง่ายและสามารถใช้ซ้ำได้ Maven ทำให้ชีวิตของนักพัฒนาเป็นเรื่องง่ายในขณะที่สร้างรายงานตรวจสอบสร้างและทดสอบการตั้งค่าอัตโนมัติ
Maven มอบวิธีการจัดการสิ่งต่อไปนี้ให้กับนักพัฒนา -
- Builds
- Documentation
- Reporting
- Dependencies
- SCMs
- Releases
- Distribution
- รายชื่อผู้รับจดหมาย
สรุปได้ว่า Maven ทำให้กระบวนการสร้างโครงการง่ายขึ้นและเป็นมาตรฐาน จัดการการรวบรวมการแจกจ่ายเอกสารการทำงานร่วมกันเป็นทีมและงานอื่น ๆ ได้อย่างราบรื่น Maven เพิ่มความสามารถในการนำกลับมาใช้ใหม่และดูแลงานส่วนใหญ่ที่เกี่ยวข้องกับการสร้าง
วิวัฒนาการของ Maven
เดิม Maven ได้รับการออกแบบมาเพื่อลดความซับซ้อนของกระบวนการสร้างในโครงการ Jakarta Turbine มีหลายโครงการและแต่ละโครงการมีไฟล์สร้าง ANT ที่แตกต่างกันเล็กน้อย JARs ถูกตรวจสอบเป็น CVS
จากนั้นกลุ่ม Apache ได้พัฒนา Maven ซึ่งสามารถสร้างหลายโครงการร่วมกันเผยแพร่ข้อมูลโครงการปรับใช้โครงการแบ่งปัน JAR ในหลายโครงการและช่วยในการทำงานร่วมกันของทีม
วัตถุประสงค์
เป้าหมายหลักของ Maven คือการมอบสิ่งต่อไปนี้ให้กับนักพัฒนา -
แบบจำลองที่ครอบคลุมสำหรับโครงการซึ่งสามารถนำกลับมาใช้ใหม่บำรุงรักษาได้และเข้าใจได้ง่ายขึ้น
ปลั๊กอินหรือเครื่องมือที่โต้ตอบกับโมเดลที่เปิดเผยนี้
โครงสร้างและเนื้อหาของโครงการ Maven ถูกประกาศในไฟล์ xml, pom.xml เรียกว่า Project Object Model (POM) ซึ่งเป็นหน่วยพื้นฐานของระบบ Maven ทั้งหมด ในบทต่อ ๆ ไปเราจะอธิบาย POM โดยละเอียด
อนุสัญญามากกว่าการกำหนดค่า
Maven ใช้ Convention เกิน Configurationซึ่งหมายความว่านักพัฒนาไม่จำเป็นต้องสร้างกระบวนการสร้างเอง
นักพัฒนาไม่จำเป็นต้องพูดถึงรายละเอียดการกำหนดค่าแต่ละรายการ Maven จัดเตรียมลักษณะการทำงานเริ่มต้นที่เหมาะสมสำหรับโครงการ เมื่อสร้างโครงการ Maven Maven จะสร้างโครงสร้างโครงการเริ่มต้น นักพัฒนาจำเป็นต้องวางไฟล์ตามนั้นเท่านั้นและเขา / เธอไม่จำเป็นต้องกำหนดการกำหนดค่าใด ๆ ใน pom.xml
ดังตัวอย่างตารางต่อไปนี้แสดงค่าเริ่มต้นสำหรับไฟล์ซอร์สโค้ดโครงการไฟล์ทรัพยากรและการกำหนดค่าอื่น ๆ สมมติว่า${basedir} หมายถึงที่ตั้งโครงการ -
สิ่งของ | ค่าเริ่มต้น |
---|---|
รหัสแหล่งที่มา | $ {basedir} / src / main / java |
ทรัพยากร | $ {basedir} / src / main / resources |
การทดสอบ | $ {basedir} / src / test |
รหัสไบต์ที่สอดคล้อง | $ {basedir} / เป้าหมาย |
JAR ที่แจกจ่ายได้ | $ {basedir} / target / class |
ในการสร้างโครงการ Maven ให้ตัวเลือกแก่นักพัฒนาในการกล่าวถึงเป้าหมายของวงจรชีวิตและการพึ่งพาโครงการ (ซึ่งอาศัยความสามารถของปลั๊กอิน Maven และตามข้อตกลงเริ่มต้น) การจัดการโครงการและการสร้างงานที่เกี่ยวข้องส่วนใหญ่ได้รับการดูแลโดยปลั๊กอิน Maven
นักพัฒนาสามารถสร้างโครงการ Maven ใด ๆ โดยไม่จำเป็นต้องเข้าใจว่าปลั๊กอินแต่ละตัวทำงานอย่างไร เราจะพูดถึง Maven Plugins โดยละเอียดในบทต่อ ๆ ไป
คุณสมบัติของ Maven
การตั้งค่าโครงการง่ายๆที่เป็นไปตามแนวทางปฏิบัติที่ดี
การใช้งานที่สอดคล้องกันในทุกโครงการ
การจัดการการพึ่งพารวมถึงการอัปเดตอัตโนมัติ
คลังเก็บข้อมูลขนาดใหญ่และเติบโตขึ้นเรื่อย ๆ
ขยายได้ด้วยความสามารถในการเขียนปลั๊กอินในภาษา Java หรือภาษาสคริปต์
เข้าถึงคุณสมบัติใหม่ได้ทันทีโดยมีการกำหนดค่าเพิ่มเติมเพียงเล็กน้อยหรือไม่มีเลย
Model-based builds - Maven สามารถสร้างโครงการจำนวนเท่าใดก็ได้ในประเภทเอาต์พุตที่กำหนดไว้ล่วงหน้าเช่น jar, war, metadata
Coherent site of project information - การใช้ข้อมูลเมตาเดียวกันตามขั้นตอนการสร้าง maven สามารถสร้างเว็บไซต์และ PDF รวมถึงเอกสารที่สมบูรณ์
Release management and distribution publication - หากไม่มีการกำหนดค่าเพิ่มเติม maven จะรวมเข้ากับระบบควบคุมแหล่งที่มาของคุณเช่น CVS และจัดการการเปิดตัวโครงการ
Backward Compatibility- คุณสามารถพอร์ตหลายโมดูลของโปรเจ็กต์ไปยัง Maven 3 จาก Maven เวอร์ชันเก่าได้อย่างง่ายดาย สามารถรองรับเวอร์ชันเก่าได้ด้วย
Automatic parent versioning - ไม่จำเป็นต้องระบุพาเรนต์ในโมดูลย่อยสำหรับการบำรุงรักษา
Parallel builds- วิเคราะห์กราฟการพึ่งพาโครงการและช่วยให้คุณสร้างโมดูลกำหนดการควบคู่กันได้ เมื่อใช้สิ่งนี้คุณจะได้รับการปรับปรุงประสิทธิภาพ 20-50%
Better Error and Integrity Reporting - Maven ปรับปรุงการรายงานข้อผิดพลาดและให้ลิงก์ไปยังหน้า Maven wiki ซึ่งคุณจะได้รับคำอธิบายทั้งหมดของข้อผิดพลาด