Dự án Ant - Building

Bây giờ chúng ta đã tìm hiểu về các kiểu dữ liệu trong Ant, đã đến lúc đưa kiến ​​thức đó vào hoạt động. Chúng tôi sẽ xây dựng một dự án trong chương này. Mục đích của chương này là xây dựng một tệp Ant biên dịch các lớp java và đặt chúng vào thư mục WEB-INF \ class.

Xem xét cấu trúc dự án sau:

  • Các tập lệnh cơ sở dữ liệu được lưu trữ trong db thư mục.

  • Mã nguồn java được lưu trữ trong src thư mục.

  • Hình ảnh, js, META-INF, kiểu (css) được lưu trữ trong war thư mục.

  • Các JSP được lưu trữ trong jsp thư mục.

  • Các tệp jar của bên thứ ba được lưu trữ trong lib thư mục.

  • Các tệp lớp java được lưu trữ trong WEB-INF\classes thư mục.

Dự án này tạo thành Hello World Ứng dụng Fax cho phần còn lại của hướng dẫn này.

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

Đây là build.xml cần thiết cho dự án này. Hãy để chúng tôi xem xét nó từng mảnh.

<?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>

Đầu tiên, chúng ta hãy khai báo một số thuộc tính cho thư mục nguồn, web và xây dựng.

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

Trong ví dụ này -

  • src.dir đề cập đến thư mục nguồn của dự án nơi có thể tìm thấy các tệp nguồn java.

  • web.dir đề cập đến thư mục nguồn web của dự án, nơi bạn có thể tìm thấy JSP, web.xml, css, javascript và các tệp liên quan đến web khác

  • build.dir đề cập đến thư mục đầu ra của biên dịch dự án.

Thuộc tính có thể tham chiếu đến các thuộc tính khác. Như thể hiện trong ví dụ trên,build.dir thuộc tính tham chiếu đến web.dir bất động sản.

Trong ví dụ này, src.dir đề cập đến thư mục nguồn của dự án.

Mục tiêu mặc định của dự án của chúng tôi là compileMục tiêu. Nhưng trước tiên chúng ta hãy xem xétclean Mục tiêu.

Mục tiêu sạch, như tên cho thấy, xóa các tệp trong thư mục xây dựng.

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

Master-classpath giữ thông tin classpath. Trong trường hợp này, nó bao gồm các lớp trong thư mục xây dựng và các tệp jar trong thư mục lib.

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

Cuối cùng, mục tiêu xây dựng để xây dựng các tệp. Trước hết, chúng tôi tạo thư mục xây dựng, nếu nó không tồn tại. Sau đó, chúng tôi thực hiện lệnh javac (chỉ định jdk1.5 làm biên dịch đích của chúng tôi). Chúng tôi cung cấp thư mục nguồn và classpath cho tác vụ javac và yêu cầu nó thả các tệp lớp vào thư mục xây dựng.

<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>

Việc thực thi Ant trên tệp này sẽ biên dịch các tệp nguồn java và đặt các lớp vào thư mục xây dựng.

Kết quả sau là kết quả của việc chạy tệp Ant -

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

BUILD SUCCESSFUL
Total time: 6.3 seconds

Các tệp được biên dịch và đặt trong build.dir thư mục.