Ant - การสร้างไฟล์ WAR
การสร้างไฟล์ WAR ด้วย Ant นั้นง่ายมากและคล้ายกับงานสร้างไฟล์ JAR ท้ายที่สุดไฟล์ WAR เช่นไฟล์ JAR เป็นเพียงไฟล์ ZIP อื่น
งาน WAR เป็นส่วนเสริมของงาน JAR แต่มีส่วนเสริมที่ดีในการจัดการกับสิ่งที่เข้าไปในโฟลเดอร์ WEB-INF / คลาสและสร้างไฟล์ web.xml งาน WAR มีประโยชน์ในการระบุโครงร่างเฉพาะของไฟล์ WAR
เนื่องจากงาน WAR เป็นส่วนเสริมของงาน JAR แอ็ตทริบิวต์ทั้งหมดของงาน JAR จึงใช้กับงาน WAR
ซีเนียร์ | คุณสมบัติและคำอธิบาย |
---|---|
1 | webxml พา ธ ไปยังไฟล์ web.xml |
2 | lib การจัดกลุ่มเพื่อระบุสิ่งที่จะเข้าไปในโฟลเดอร์ WEB-INF \ lib |
3 | classes การจัดกลุ่มเพื่อระบุสิ่งที่จะเข้าไปในโฟลเดอร์ WEB-INF \ class |
4 | metainf ระบุคำแนะนำสำหรับการสร้างไฟล์ MANIFEST.MF |
ดำเนินการต่อ Hello Worldโครงการ Fax Application ให้เราเพิ่มเป้าหมายใหม่เพื่อสร้างไฟล์ jar แต่ก่อนหน้านั้นให้เราพิจารณาภารกิจสงคราม ลองพิจารณาตัวอย่างต่อไปนี้ -
<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
<fileset dir = "${web.dir}/WebContent">
<include name = "**/*.*"/>
</fileset>
<lib dir = "thirdpartyjars">
<exclude name = "portlet.jar"/>
</lib>
<classes dir = "${build.dir}/web"/>
</war>
ตามตัวอย่างก่อนหน้านี้ไฟล์ web.dir ตัวแปรหมายถึงโฟลเดอร์ของเว็บต้นทางเช่นโฟลเดอร์ที่มีไฟล์ JSP, css, javascript เป็นต้น
build.dirตัวแปรหมายถึงโฟลเดอร์เอาต์พุต - นี่คือที่ที่สามารถพบคลาสสำหรับแพ็คเกจ WAR โดยทั่วไปคลาสจะรวมอยู่ในโฟลเดอร์ WEB-INF / คลาสของไฟล์ WAR
ในตัวอย่างนี้เรากำลังสร้างไฟล์สงครามชื่อ fax.war ไฟล์ WEB.XML ได้มาจากโฟลเดอร์แหล่งที่มาของเว็บ ไฟล์ทั้งหมดจากโฟลเดอร์ 'WebContent' ภายใต้เว็บจะถูกคัดลอกไปยังไฟล์ WAR
โฟลเดอร์ WEB-INF / lib ถูกเติมด้วยไฟล์ jar จากโฟลเดอร์ thirdpartyjars อย่างไรก็ตามเราไม่รวม portlet.jar เนื่องจากมีอยู่แล้วในโฟลเดอร์ lib ของแอ็พพลิเคชันเซิร์ฟเวอร์ สุดท้ายเรากำลังคัดลอกคลาสทั้งหมดจากโฟลเดอร์เว็บของไดเร็กทอรี build และใส่ลงในโฟลเดอร์ WEB-INF / คลาส
ห่อภารกิจสงครามไว้ในเป้าหมาย Ant (โดยปกติจะเป็นแพ็คเกจ) แล้วเรียกใช้งาน สิ่งนี้จะสร้างไฟล์ WAR ในตำแหน่งที่ระบุ
เป็นไปได้ทั้งหมดที่จะซ้อนคลาส lib, metainf และ webinf director เพื่อให้พวกเขาอยู่ในโฟลเดอร์ที่กระจัดกระจายที่ใดก็ได้ในโครงสร้างโปรเจ็กต์ แต่แนวทางปฏิบัติที่ดีที่สุดแนะนำว่าโครงการเว็บของคุณควรมีโครงสร้างเนื้อหาเว็บที่คล้ายกับโครงสร้างของไฟล์ WAR โครงการแอปพลิเคชันแฟกซ์มีโครงสร้างที่ระบุไว้โดยใช้หลักการพื้นฐานนี้
ในการดำเนินงานสงครามให้ห่อมันไว้ในเป้าหมายโดยทั่วไปคือเป้าหมายบิลด์หรือแพ็กเกจและเรียกใช้งาน
<target name = "build-war">
<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
<fileset dir = "${web.dir}/WebContent">
<include name = "**/*.*"/>
</fileset>
<lib dir = "thirdpartyjars">
<exclude name = "portlet.jar"/>
</lib>
<classes dir = "${build.dir}/web"/>
</war>
</target>
การเรียกใช้ Ant บนไฟล์นี้จะสร้างไฟล์ fax.war ไฟล์สำหรับเรา
ผลลัพธ์ต่อไปนี้เป็นผลมาจากการรันไฟล์ Ant -
C:\>ant build-war
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 12.3 seconds
ตอนนี้ไฟล์ fax.war ถูกวางไว้ในโฟลเดอร์ผลลัพธ์ เนื้อหาของไฟล์สงครามจะเป็น -
fax.war:
+---jsp This folder contains the jsp files
+---css This folder contains the stylesheet files
+---js This folder contains the javascript files
+---images This folder contains the image files
+---META-INF This folder contains the Manifest.Mf
+---WEB-INF
+---classes This folder contains the compiled classes
+---lib Third party libraries and the utility jar files
WEB.xml Configuration file that defines the WAR package