Ant - โครงการก่อสร้าง

ตอนนี้เราได้เรียนรู้เกี่ยวกับชนิดข้อมูลใน Ant แล้วก็ถึงเวลาที่จะนำความรู้นั้นไปปฏิบัติจริง เราจะสร้างโครงการในบทนี้ จุดมุ่งหมายของบทนี้คือการสร้างไฟล์ Ant ที่รวบรวมคลาส java และวางไว้ในโฟลเดอร์ WEB-INF \ class

พิจารณาโครงสร้างโครงการต่อไปนี้ -

  • สคริปต์ฐานข้อมูลจะถูกเก็บไว้ในไฟล์ db โฟลเดอร์

  • ซอร์สโค้ด java ถูกเก็บไว้ในไฟล์ src โฟลเดอร์

  • รูปภาพ, js, META-INF, สไตล์ (css) จะถูกเก็บไว้ในไฟล์ war โฟลเดอร์

  • JSPs ถูกเก็บไว้ในไฟล์ jsp โฟลเดอร์

  • ไฟล์ jar ของบุคคลที่สามจะถูกเก็บไว้ในไฟล์ lib โฟลเดอร์

  • ไฟล์คลาส java ถูกเก็บไว้ในไฟล์ WEB-INF\classes โฟลเดอร์

โครงการนี้เป็นรูปแบบ Hello World แอปพลิเคชันแฟกซ์สำหรับส่วนที่เหลือของบทช่วยสอนนี้

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

นี่คือ build.xml ที่จำเป็นสำหรับโปรเจ็กต์นี้ ให้เราพิจารณาทีละชิ้น

<?xml version = "1.0"?>
<project name = "fax" basedir = "." default = "build">
   <property name = "src.dir" value = "src"/>
   <property name = "web.dir" value = "war"/>
   <property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>
   <property name = "name" value = "fax"/>

   <path id = "master-classpath">
      <fileset dir = "${web.dir}/WEB-INF/lib">
         <include name = "*.jar"/>
      </fileset>
      
      <pathelement path = "${build.dir}"/>
   </path>

   <target name = "build" description = "Compile source tree java files">
      <mkdir dir = "${build.dir}"/>
      
      <javac destdir = "${build.dir}" source = "1.5" target = "1.5">
         <src path = "${src.dir}"/>
         <classpath refid = "master-classpath"/>
      </javac>
   </target>
 
   <target name = "clean" description = "Clean output directories">
      <delete>
         <fileset dir = "${build.dir}">
            <include name = "**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

ขั้นแรกให้เราประกาศคุณสมบัติบางอย่างสำหรับโฟลเดอร์ต้นทางเว็บและสร้าง

<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

ในตัวอย่างนี้ -

  • src.dir หมายถึงโฟลเดอร์ซอร์สของโปรเจ็กต์ที่สามารถพบไฟล์ซอร์ส java ได้

  • web.dir หมายถึงโฟลเดอร์แหล่งเว็บของโครงการซึ่งคุณสามารถค้นหา JSPs, web.xml, css, javascript และไฟล์อื่น ๆ ที่เกี่ยวข้องกับเว็บ

  • build.dir หมายถึงโฟลเดอร์ผลลัพธ์ของการคอมไพล์โครงการ

คุณสมบัติสามารถอ้างถึงคุณสมบัติอื่น ๆ ดังที่แสดงในตัวอย่างด้านบนไฟล์build.dir คุณสมบัติอ้างอิงถึงไฟล์ web.dir ทรัพย์สิน.

ในตัวอย่างนี้ไฟล์ src.dir อ้างถึงโฟลเดอร์ต้นทางของโครงการ

เป้าหมายเริ่มต้นของโครงการของเราคือไฟล์ compileเป้าหมาย แต่ก่อนอื่นให้เราดูที่clean เป้าหมาย

เป้าหมายที่สะอาดตามชื่อที่แนะนำจะลบไฟล์ในโฟลเดอร์บิลด์

<target name = "clean" description = "Clean output directories">
   <delete>
      <fileset dir = "${build.dir}">
         <include name = "**/*.class"/>
      </fileset>
   </delete>
</target>

master-classpath เก็บข้อมูล classpath ในกรณีนี้จะรวมคลาสในโฟลเดอร์ build และไฟล์ jar ในโฟลเดอร์ lib

<path id = "master-classpath">
   <fileset dir = "${web.dir}/WEB-INF/lib">
      <include name = "*.jar"/>
   </fileset>
   
   <pathelement path = "${build.dir}"/>
</path>

สุดท้ายสร้างเป้าหมายเพื่อสร้างไฟล์ ก่อนอื่นเราสร้างไดเร็กทอรีบิลด์หากไม่มีอยู่ จากนั้นเราดำเนินการคำสั่ง javac (ระบุ jdk1.5 เป็นคอมไพล์เป้าหมายของเรา) เราจัดหาโฟลเดอร์ต้นทางและ classpath ให้กับงาน javac และขอให้ปล่อยไฟล์คลาสในโฟลเดอร์ build

<target name = "build" description = "Compile main source tree java files">
   <mkdir dir = "${build.dir}"/>
   
   <javac destdir = "${build.dir}" source = "1.5" target = "1.5" debug = "true"
      deprecation = "false" optimize = "false" failonerror = "true">
      <src path = "${src.dir}"/>
      <classpath refid = "master-classpath"/>
   </javac>
</target>

การดำเนินการ Ant บนไฟล์นี้จะรวบรวมไฟล์ซอร์ส java และวางคลาสไว้ในโฟลเดอร์ build

ผลลัพธ์ต่อไปนี้เป็นผลมาจากการรันไฟล์ Ant -

C:\>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

ไฟล์จะถูกรวบรวมและวางไว้ในไฟล์ build.dir โฟลเดอร์