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