มดคืออะไร?
Apache Ant เป็นเครื่องมือสร้างที่ใช้ Java James Duncan Davidson ผู้ก่อตั้งดั้งเดิมชื่อของเครื่องมือนี้เป็นตัวย่อของเครื่องมือที่เรียบร้อยอีกตัวหนึ่ง
มดทำอะไร:
เครื่องมือสร้างใช้ในการพัฒนาซอฟต์แวร์เพื่อแปลงซอร์สโค้ดและไฟล์อินพุตอื่น ๆ เป็นไฟล์ที่เรียกใช้งานได้ (และอาจเป็นรูปแบบภาพผลิตภัณฑ์ที่ติดตั้งได้) เมื่อกระบวนการสร้างแอปพลิเคชันมีความซับซ้อนมากขึ้นจึงมีความสำคัญมากขึ้นเพื่อให้แน่ใจว่าขั้นตอนการสร้างเดียวกันที่แน่นอนจะถูกใช้ในแต่ละรุ่นในขณะที่การบรรลุระบบอัตโนมัติให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อสร้างรุ่นรุ่นที่สอดคล้องกันในเวลาที่เหมาะสม
ข้อดีของมด:
ANT เป็นเครื่องมือสร้างที่ใช้ Java ในทางทฤษฎีมันค่อนข้างคล้ายกับที่จะทำใน (unix) c แต่ไม่มีข้อบกพร่องในการทำ เวอร์ชันล่าสุดคือ: ANT 1.8.4 เนื่องจากเราได้ทำไปแล้ว gnumake, nmake, แยมและเครื่องมือสร้างอื่น ๆ ทำไมเราต้องใช้เครื่องมือสร้างใหม่? เนื่องจากผู้เขียนดั้งเดิมของ ANT ไม่สามารถทนต่อข้อ จำกัด และความไม่สะดวกของเครื่องมือเหล่านี้ได้เมื่อพัฒนาซอฟต์แวร์บนแพลตฟอร์มหลาย (ฮาร์ดแวร์) เครื่องมือทำเหมือนเป็นหลักโดยใช้เชลล์: พวกเขาคำนวณการพึ่งพาและจากนั้นเรียกใช้คำสั่ง (คำสั่งเหล่านี้ไม่แตกต่างจากคำสั่งที่คุณพิมพ์บนบรรทัดคำสั่ง) ซึ่งหมายความว่าคุณสามารถขยายเครื่องมือได้อย่างง่ายดายโดยใช้โปรแกรม OS เฉพาะหรือเขียนโปรแกรมใหม่ (คำสั่ง) อย่างไรก็ตามมันก็หมายความว่าคุณ จำกัด ตัวเองไว้ในระบบปฏิบัติการเฉพาะหรือประเภทระบบปฏิบัติการเฉพาะเช่น UNIX
มดแตกต่างกัน ซึ่งแตกต่างจากโหมดส่วนขยายตามคำสั่งเชลล์มดใช้คลาส Java เพื่อขยาย (ผู้ใช้) ไม่จำเป็นต้องเขียนคำสั่งเชลล์ ไฟล์การกำหนดค่าขึ้นอยู่กับ XML งานต่าง ๆ สามารถดำเนินการได้โดยเรียกต้นไม้เป้าหมาย แต่ละงานทำงานโดยวัตถุที่ใช้อินเตอร์เฟสงานเฉพาะ
ANT กำหนดการพึ่งพาระหว่างไฟล์ที่สร้างขึ้นซึ่งใช้คลาส Java ข้ามแพลตฟอร์ม ด้วย ANT คุณสามารถเขียนไฟล์เครื่องกำเนิดไฟฟ้าเดียวที่ทำงานอย่างสม่ำเสมอบนแพลตฟอร์ม Java ใด ๆ
มดสร้างการวิเคราะห์ไฟล์:
Ant ไม่ได้กำหนดไวยากรณ์ที่กำหนดเองของตัวเอง แต่ไฟล์ที่สร้างขึ้นจะถูกเขียนใน XML มีชุดขององค์ประกอบ XML ที่กำหนดไว้ล่วงหน้าที่มดสามารถเข้าใจได้และองค์ประกอบใหม่สามารถกำหนดให้ขยายการทำงานของ ANT แต่ละไฟล์บิลด์ประกอบด้วยองค์ประกอบโครงการเดียวซึ่งจะมีองค์ประกอบเป้าหมายอย่างน้อยหนึ่งรายการ เป้าหมายเป็นขั้นตอนที่กำหนดไว้ในกระบวนการสร้างซึ่งดำเนินการจำนวนการดำเนินการใด ๆ เช่นการรวบรวมชุดไฟล์ต้นฉบับ และการดำเนินการเหล่านี้เองจะดำเนินการโดยแท็กงานเฉพาะอื่น ๆ จากนั้นงานเหล่านี้จะถูกจัดกลุ่มเป็นองค์ประกอบเป้าหมายแต่ละรายการตามความจำเป็น การดำเนินการทั้งหมดที่จำเป็นสำหรับกระบวนการสร้างเดียวสามารถวางไว้ในองค์ประกอบเป้าหมายเดียว แต่จะช่วยลดความยืดหยุ่น มันมักจะดีกว่าที่จะแบ่งการดำเนินการเหล่านั้นออกเป็นขั้นตอนการสร้างตรรกะแต่ละขั้นตอนที่มีอยู่ในองค์ประกอบเป้าหมายของตัวเอง สิ่งนี้จะช่วยให้แต่ละส่วนของกระบวนการสร้างโดยรวมดำเนินการโดยไม่จำเป็นต้องดำเนินการส่วนอื่น ๆ
ตัวอย่างเช่นโดยการเรียกเฉพาะเป้าหมายบางอย่างคุณสามารถรวบรวมซอร์สโค้ดของโครงการของคุณโดยไม่ต้องสร้างไฟล์โครงการที่ติดตั้งได้ องค์ประกอบโครงการระดับบนสุดจำเป็นต้องมีแอตทริบิวต์เริ่มต้นซึ่งระบุเป้าหมายที่จะดำเนินการหากมีการเรียกว่า ANT จากนั้นคุณต้องใช้องค์ประกอบเป้าหมายเพื่อกำหนดเป้าหมายเอง
นี่คือไฟล์ที่สร้างพื้นฐาน:
<? xml version = "1.0"?> <project default = "init"> <target name = "init"> </target> </project>
การใช้มดขั้นพื้นฐาน:
1. กำหนดค่าตัวแปรสภาพแวดล้อม:
ANT_HOME: C: /ANT-1.8 -----> เส้นทางไดเรกทอรีการติดตั้ง/การบีบอัดของ ANT
ผนวกเข้ากับเส้นทาง: C: /Ant-1.8/bin -----> เส้นทางไดเรกทอรี bin ใน Ant
2. ยืนยันว่าการกำหนดค่าตัวแปรสภาพแวดล้อมจะเปิดหน้าต่าง CMD สำเร็จแล้วจากนั้นป้อนคำสั่ง: ANT:
ดูหน้าจอต่อไปนี้:
เนื่องจาก ANT จำเป็นต้องมีไฟล์ build.xml โดยค่าเริ่มต้นเมื่อสร้างมีพรอมต์ข้างต้นซึ่งหมายความว่าสภาพแวดล้อมของ ANT ได้รับการกำหนดค่าสำเร็จแล้ว
3. สร้างโฟลเดอร์ที่เรียกว่า HelloWorld โดยใช้ ANT:
ก่อนอื่นคุณต้องแก้ไข build.xml:
<? xml version = "1.0"?> <project default = "init"> <target name = "init"> <span style = "color:#ff0000;"> <mkdir dir = "helloWorld"
จากนั้นสลับไปยังไดเรกทอรีที่ไฟล์ build.xml อยู่ให้ป้อน ANT และหากมีพรอมต์ดังนี้การสร้างโฟลเดอร์จะสำเร็จ:
(ส่วนเริ่มต้นเทียบเท่ากับเอาต์พุตของบันทึก)
4. คุณสามารถใช้ ANT เพื่อสร้างไดเรกทอรีไฟล์ซ้อนกันหลายระดับที่จำเป็นต้องแก้ไขในไฟล์ build.xml เท่านั้น:
<? xml version = "1.0"?> <project default = "init"> <target name = "init"> <span style = "color:#ff0000;"> <mkdir dir = "helloWorld/a/b/c"/> </span> </span>
5. ลบไดเรกทอรีหลายระดับดังกล่าวข้างต้น:
<? xml version = "1.0"?> <project default = "init"> <target name = "init"> <span style = "color:#ff0000;"> <delete dir = "HelloWorld"
หมายเหตุ: นี่คือเส้นทางที่ต้องเข้าสู่เส้นทางไดเรกทอรีระดับสูงสุดซึ่งเป็นพลังของเครื่องมือ ANT:
หากคุณต้องการลบไดเรกทอรีใน Java คุณสามารถลบได้เว้นแต่ว่าไดเรกทอรีจะว่างเปล่ามิฉะนั้นคุณจะต้องค่อยๆลบออก
การใช้เครื่องมือ ANT คุณสามารถลบโฟลเดอร์ที่มีไดเรกทอรีย่อยได้โดยตรง
ลองดูที่ไฟล์ XML ตัวอย่างอื่น:
<? xml version = "1.0"?> <project default = "init" name = "Project"> <scription> โครงการง่าย ๆ ที่แนะนำการใช้แท็กคำอธิบายในไฟล์ ANT Build </คำอธิบาย> <!-ความคิดเห็น XML สามารถใช้-> <target name = "init" คำอธิบาย = "เริ่มต้นฐานข้อมูลอาร์กอน"> <!-ดำเนินการขั้นตอนการเริ่มต้นที่นี่-> </target> </project>
ดังที่เห็นได้ความคิดเห็นของ XML สามารถใช้ได้ตลอดทั้งไฟล์บิลด์เพื่อความชัดเจน ยิ่งไปกว่านั้น ANT ยังกำหนดองค์ประกอบคำอธิบายและคำอธิบายของตัวเองซึ่งสามารถใช้เพื่อให้คำอธิบายประกอบที่มีโครงสร้างมากขึ้น
แอตทริบิวต์มด:
คุณสมบัติใน ANT นั้นคล้ายคลึงกับตัวแปรในภาษาการเขียนโปรแกรมและพวกเขาทั้งหมดมีชื่อและค่านิยม อย่างไรก็ตามแตกต่างจากตัวแปรปกติเมื่อตั้งค่าคุณสมบัติในมดจะไม่เปลี่ยนแปลง พวกมันไม่เปลี่ยนรูปเช่นเดียวกับวัตถุสตริงในภาษา Java สิ่งนี้อาจดูเข้มงวดในตอนแรก แต่มันก็คือการปฏิบัติตามหลักการง่าย ๆ ของ Ant: หลังจากทั้งหมดมันเป็นเครื่องมือเครื่องกำเนิดไม่ใช่ภาษาการเขียนโปรแกรม หากคุณพยายามกำหนดค่าใหม่ให้กับคุณสมบัติที่มีอยู่สิ่งนี้จะไม่ถือเป็นข้อผิดพลาด แต่คุณสมบัติจะยังคงรักษาค่าที่มีอยู่
คำจำกัดความและการใช้คุณสมบัติ:
<property name = "metal" value = "Beryllium"/>
ในการอ้างอิงคุณสมบัตินี้ในส่วนอื่น ๆ ของไฟล์ที่สร้างขึ้นให้ใช้ไวยากรณ์ต่อไปนี้:
คัดลอกรหัสดังนี้: $ {metal}
ตัวอย่างเช่นในการใช้ค่าดังกล่าวซึ่งเป็นส่วนหนึ่งของค่าของคุณสมบัติอื่นเขียนฉลากดังนี้
<property name = "metal-database" value = "$ {metal} .db"/>>>> >>
แอตทริบิวต์ตำแหน่ง:
แอตทริบิวต์มักใช้ในการอ้างอิงไฟล์หรือไดเรกทอรีบนระบบไฟล์ แต่สำหรับแพลตฟอร์มที่ใช้ตัวคั่นพา ธ ที่แตกต่างกัน (ตัวอย่างเช่น / และ /) สิ่งนี้อาจทำให้เกิดปัญหาเมื่อครอบคลุมแพลตฟอร์มที่แตกต่างกัน แอตทริบิวต์ตำแหน่งของ Ant ได้รับการออกแบบมาโดยเฉพาะเพื่อรวมเส้นทางระบบไฟล์ในลักษณะที่ไม่ขึ้นกับแพลตฟอร์ม ใช้ตำแหน่งแทนค่าเช่นนี้:
<property name = "database-file" location = "Archive/Databases/$ {metal} .db"/> อักขระที่แยกจากเส้นทางที่ใช้สำหรับแอตทริบิวต์ตำแหน่งจะถูกแปลงเป็นรูปแบบที่ถูกต้องของแพลตฟอร์มปัจจุบัน และเนื่องจากชื่อไฟล์มีความสัมพันธ์จึงถือว่าสัมพันธ์กับไดเรกทอรีพื้นฐานของโครงการ นอกจากนี้เรายังสามารถเขียนได้อย่างง่ายดายดังนี้:
<property name = "database-file" location = "Archive/Databases/$ {metal} .db"/>แท็กทั้งสองรุ่นนี้จะมีพฤติกรรมเดียวกันบนแพลตฟอร์มที่แตกต่างกัน
กำหนดการขึ้นอยู่กับ:
การสร้างโครงการโดยทั่วไปต้องใช้หลายขั้นตอน - ตัวอย่างเช่นก่อนอื่นคุณต้องรวบรวมซอร์สโค้ดแล้วบรรจุลงในไฟล์เก็บถาวร Java (JAR) หลายขั้นตอนเหล่านี้มีลำดับที่กำหนดไว้อย่างชัดเจน - ตัวอย่างเช่นคุณไม่สามารถบรรจุไฟล์คลาสได้จนกว่าคอมไพเลอร์จะสร้างจากซอร์สโค้ด ซึ่งแตกต่างจากการระบุเป้าหมายตามลำดับ ANT ใช้วิธีการที่ยืดหยุ่นมากขึ้นในการกำหนดการอ้างอิง แต่ละเป้าหมายจะถูกกำหนดขึ้นอยู่กับเป้าหมายอื่น ๆ ทั้งหมดที่ต้องสำเร็จก่อนที่จะสามารถดำเนินการได้ สิ่งนี้ทำได้โดยใช้แอตทริบิวต์ขึ้นอยู่กับองค์ประกอบเป้าหมาย
<target name = "init"/> <target name = "preprocess" ขึ้นอยู่กับ = "init"/> <name target = "Compile" ขึ้นอยู่กับ = "init, preprocess"/> <target name = "package"
วิธีนี้ช่วยให้คุณสามารถดำเนินการตามขั้นตอนการสร้างได้ทุกขั้นตอนของโครงการ ANT จะดำเนินการก่อนขั้นตอนที่กำหนดไว้ก่อน ในตัวอย่างข้างต้นหาก ANT เสร็จสิ้นขั้นตอนการคอมไพล์จะกำหนดว่าสองเป้าหมายของ init และประมวลผลล่วงหน้าจะต้องดำเนินการก่อน เป้าหมายเริ่มต้นไม่ได้ขึ้นอยู่กับเป้าหมายอื่น ๆ ดังนั้นมันจะถูกดำเนินการก่อน จากนั้นมดจะตรวจสอบเป้าหมายล่วงหน้าและพบว่ามันขึ้นอยู่กับเป้าหมายเริ่มต้น; เนื่องจากหลังถูกดำเนินการแล้ว ANT จะไม่ดำเนินการอีกครั้งดังนั้นเขาจึงเริ่มดำเนินการเป้าหมายการประมวลผลล่วงหน้า ในที่สุดงานคอมไพล์นั้นสามารถดำเนินการได้
โปรดทราบว่าลำดับที่เป้าหมายปรากฏในไฟล์ที่สร้างขึ้นนั้นไม่สำคัญ: ลำดับที่การดำเนินการถูกกำหนดโดยเฉพาะโดยแอตทริบิวต์ขึ้นอยู่กับ