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 ซึ่งคุณจะได้รับคำอธิบายทั้งหมดของข้อผิดพลาด