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 โฟลเดอร์