เหตุใด Apache จึงมีเครื่องมือสองแบบสำหรับการสร้างและการจัดการการพึ่งพา


9

Apache มีเครื่องมือสองแบบแยก:

พวกเขาดูเหมือนจะเติมทั้งช่องเดียวกัน ฉันมีสองคำถาม:

  1. สิ่งที่เป็นไฮไลท์ของความแตกต่างที่สำคัญระหว่างสองเครื่องมือ?
    • ฉันแน่ใจว่าบทความที่ยาวมาก ๆ สามารถเขียนได้เกี่ยวกับความแตกต่างระหว่างสองเรื่องนี้ฉันไม่ได้มองหารายละเอียดมากขนาดนั้นหรือฉันกำลังมองหาข้อโต้แย้งแบบอัตนัยในการเลือกข้อใดข้อหนึ่ง
  2. ประวัติความเป็นมาของการเขียนโปรแกรม - มันเกิดขึ้นได้อย่างไรว่า Apache พัฒนาขึ้นเพื่อสร้างเครื่องมือสองชุดที่แยกจากกันโดยสิ้นเชิง

คำตอบ:


7

สิ่งที่เป็นไฮไลท์ของความแตกต่างที่สำคัญระหว่างสองเครื่องมือ?

  • โครงสร้างโครงการ

    • Maven ชอบโครงสร้างของโครงการที่เฉพาะเจาะจง: เราจะต้องทำสิ่งต่าง ๆ ในวิถีทาง Maven Maven มาพร้อมกับขั้นตอนการสร้างร่วมกันกำหนดค่าไว้แล้วในรากpom.xmlที่ได้รับมรดกตามปกติโดยทุกโครงการอื่น ๆpom.xmls

    • Ant + Ivy เปิดกว้างมากขึ้น: ในขณะที่สามารถทำได้มากมีความต้องการขั้นพื้นฐานเพียงเล็กน้อยในแง่ของโครงสร้างโครงการหรือการใช้สคริปต์ ไม่มีงานสร้างเป้าหมายหรือกระบวนการที่กำหนดไว้ล่วงหน้า แต่ละbuild.xmlกระดานเป็นกระดานชนวนที่สะอาด (ยกเว้นในกรณีที่มีสคริปต์อื่นอยู่ด้วย)

  • ปฐมนิเทศ

    • Maven เป็นเป้าหมายที่มุ่งเน้น คุณไม่ได้พูดว่า "ดำเนินการเป้าหมายการสร้างนี้" คุณขอให้ "สร้าง" หรือ "ปรับใช้" และ Maven ทำทุกอย่างที่จำเป็นต้องทำเพื่อไปที่นั่น: คุณพูดในสิ่งที่คุณต้องการทำ

    • Ant + Ivy เป็นงานที่มุ่งเน้น แต่ละงานมีการกำหนดการใช้งานและกำหนดเอง คุณบอกวิธีการทำสิ่งที่คุณต้องการ

  • การจัดการการพึ่งพา

    • Maven เป็นที่รู้จักกันดีที่สุดสำหรับการจัดการการพึ่งพาโดยอัตโนมัติ มันจะดาวน์โหลดเวอร์ชันที่ถูกต้องในขณะที่สร้างโดยไม่มีการโต้ตอบกับผู้ใช้ตราบใดที่ที่เก็บ URL นั้นได้รับการกำหนดค่าไว้ล่วงหน้า

    • Ant ไม่มีการจัดการการพึ่งพายกเว้น "Java Classpath" Ivy เพิ่มการจัดการการพึ่งพาที่น่าเบื่อกว่า Maven เล็กน้อย แต่ก็ยังเป็นไปโดยอัตโนมัติ กุญแจสำคัญในที่นี้คือคุณไม่สามารถเลือกการจัดการการพึ่งพา (เช่น "ขวดที่รวมอยู่ใน distro ของฉันหรือตรวจสอบลงในการควบคุมแหล่งที่มา") หรือคุณสามารถจ้างภายนอกผ่าน Ivy ตัวเลือกนั้นหมายถึงความยืดหยุ่นที่มากขึ้นเพื่อตอบสนองความต้องการของโครงการ

  • สะดวกในการใช้

    • Maven เป็น (ในทางทฤษฎี) ใช้งานง่าย นักพัฒนาใด ๆ สามารถรับโครงการ Maven และทราบทันทีว่าแหล่งข้อมูลโครงการทั้งหมดตั้งอยู่ที่ใดและมีไว้เพื่อ: สิ่งนี้เกิดจากจุดแรกเกี่ยวกับ Maven ที่มีวิธีเฉพาะในการทำสิ่งต่าง ๆ

    • Ant + Ivy อาจมีช่วงการเรียนรู้ที่สูงชันเนื่องจากแต่ละโครงการอาจแตกต่างกัน โครงการที่แตกต่างกันอาจมีวิธีที่แตกต่างกันในการบรรลุเป้าหมายเดียวกัน

  • ขยาย

    • Maven อนุญาตให้เขียนปลั๊กอินและเปลี่ยนแปลงกระบวนการสร้าง อย่างไรก็ตามมันออกมาจากกล่องพร้อมกับรูทpom.xmlที่ผลักดันนักพัฒนาไปสู่กระบวนการสร้างที่กำหนดไว้ล่วงหน้า เป้าหมายใหม่หรือขั้นตอนการสร้างต้องการความคิดที่รอบคอบและความพยายามพิเศษในการแทรกเข้าสู่กระบวนการสร้าง

    • Ant + Ivy ยังอนุญาตให้เขียนปลั๊กอินและงานใหม่: การทำเช่นนั้นค่อนข้างง่ายและสามารถรวมงานใหม่เข้ากับความพยายามน้อยที่สุด ไม่มีเป้าหมายหรือเป้าหมายที่กำหนดไว้ล่วงหน้าที่จะสับเปลี่ยนหรือรวมภารกิจใหม่เข้าด้วยกัน

มันเกิดขึ้นได้อย่างไรว่า Apache พัฒนาขึ้นเพื่อสร้างเครื่องมือสองชุดที่แยกจากกันโดยสิ้นเชิง

สิ่งแรกที่ต้องทำความเข้าใจก็คือโครงการ Apache ไม่มีอะไรมากไปกว่าร่มภายใต้โครงการอิสระที่แยกจากกัน ทีมที่แตกต่างกันทำงานในโครงการที่แตกต่างกัน ในขณะที่นักพัฒนาแต่ละคนอาจทำงานในหลายโครงการ แต่ไม่มีแผนงานโดยรวมที่รวม Ant, Ivy และ Maven

มดมาก่อน มันถูกออกแบบมาให้เทียบเท่ากับการสร้างจาวา ในขณะที่ Make สามารถสร้างโครงการ Java มันน่าเบื่อ: Make มีอยู่เพื่อรวบรวมคอมไพล์หน่วยการรวบรวมแยกต่างหากจากนั้นเชื่อมโยง วิธี Java จะjavacรวบรวมทุกอย่างในครั้งเดียวและสิ่งที่เราเรียกว่า "การเชื่อมโยง" เกิดขึ้นจริงในความกล้าหาญของ JVM ที่รันไทม์ Make ไม่ใช่เครื่องมือที่เหมาะสมสำหรับงาน: Makefile สำหรับ Java นั้นเป็นเป้าหมายหนึ่งหรือสองเป้าหมาย ( javac, jar)

Ant เพิ่มโครงสร้างเล็กน้อยที่ด้านบนของ Make แต่ไม่ได้เปลี่ยนขั้นตอนพื้นฐาน

หลังจากนั้นครู่หนึ่งชุมชนก็ตระหนักว่าการไล่ล่าไฟล์ jar ไม่สนุก นอกจากนี้ยังไม่มีวิธีมาตรฐานในการเขียนโครงการ การพัฒนา Java ไม่เป็นระเบียบ Maven ถูกออกแบบมาเพื่อแก้ไขปัญหาเหล่านี้: มันจะนำโครงสร้างโครงการทั่วไปและทำให้การล่าสัตว์ลงในไฟล์ jar โดยอัตโนมัติ

อย่างไรก็ตาม Ant ยังคงมีประโยชน์จริงๆ บางโครงการก็ให้ความสำคัญกับกระบวนการโฆษณาของ Ant มากขึ้น บางโครงการไม่ได้รวบรวมรหัส บางโครงการเก่าและไม่น่าที่ใครจะ "อัพเกรด" เป็น Maven

ตามมา Ivy: มันเพิ่มการจัดการการพึ่งพาให้กับ Ant ให้โครงการที่ดีที่สุดของโลกทั้งสอง คุณสามารถเก็บสคริปต์ดั้งเดิมของคุณหรือสภาพแวดล้อมที่กำหนดเองสูง แต่รับคุณสมบัติที่สำคัญที่สุดของ Maven: การจัดการการพึ่งพา

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