Ứng dụng Ant - Bao bì

Chúng tôi đã tìm hiểu các khía cạnh khác nhau của Ant bằng cách sử dụng Hello World Ứng dụng web fax theo từng bit và mảnh.

Bây giờ đã đến lúc kết hợp mọi thứ lại với nhau để tạo một tệp build.xml đầy đủ và hoàn chỉnh. Xem xétbuild.propertiesbuild.xml các tệp như sau -

build.properties

deploy.path = c:\tomcat6\webapps

build.xml

<?xml version = "1.0"?>

<project name = "fax" basedir = "." default = "usage">

   <property file = "build.properties"/>
   <property name = "src.dir" value = "src"/>
   <property name = "web.dir" value = "war"/>
   <property name = "javadoc.dir" value = "doc"/>
   <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 = "javadoc">
      <javadoc packagenames = "faxapp.*" sourcepath = "${src.dir}" 
         destdir = "doc" version = "true" windowtitle = "Fax Application">
         
         <doctitle><![CDATA[<h1> =  Fax Application  = </h1>]]>
         </doctitle>

         <bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]>
         </bottom>

         <group title = "util packages" packages = "faxapp.util.*"/>
         <group title = "web packages" packages = "faxapp.web.*"/> 
         <group title = "data packages" packages = "faxapp.entity.*:faxapp.dao.*"/>
      </javadoc>
   </target>

   <target name = "usage">
      <echo message = ""/>
      <echo message = "${name} build file"/>
      <echo message = "-----------------------------------"/>
      <echo message = ""/>
      <echo message = "Available targets are:"/>
      <echo message = ""/>
      <echo message = "deploy    --> Deploy application as directory"/>
      <echo message = "deploywar --> Deploy application as a WAR file"/>
      <echo message = ""/>
   </target>

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

   <target name = "deploy" depends = "build" description = "Deploy application">
      <copy todir = "${deploy.path}/${name}" preservelastmodified = "true">
         <fileset dir = "${web.dir}">
            <include name = "**/*.*"/>
         </fileset>
      </copy>
   </target>


   <target name = "deploywar" depends = "build" description = 
      "Deploy application as a WAR file">
   
      <war destfile = "${name}.war" webxml = "${web.dir}/WEB-INF/web.xml">
         <fileset dir = "${web.dir}">
            <include name = "**/*.*"/>
         </fileset>
      </war>
      
      <copy todir = "${deploy.path}" preservelastmodified = "true">
         <fileset dir = ".">
            <include name = "*.war"/>
         </fileset>
      </copy>
   </target>

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

Trong ví dụ này -

  • Đầu tiên chúng tôi khai báo đường dẫn đến thư mục webapps trong Tomcat trong tệp thuộc tính xây dựng dưới dạng deploy.path Biến đổi.

  • Chúng tôi cũng khai báo thư mục nguồn cho các tệp java trong src.dir Biến đổi.

  • Sau đó, chúng tôi khai báo thư mục nguồn cho các tệp web trong web.dir Biến đổi. javadoc.dir là thư mục để lưu trữ tài liệu java và build.dir là đường dẫn để lưu trữ các tệp đầu ra của bản dựng.

  • Sau đó, chúng tôi khai báo tên của ứng dụng web, đó là fax trong trường hợp của chúng ta.

  • Chúng tôi cũng xác định đường dẫn lớp chính chứa các tệp JAR có trong thư mục WEB-INF / lib của dự án.

  • Chúng tôi cũng bao gồm các tệp lớp có trong build.dir trong đường dẫn lớp chủ.

  • Mục tiêu Javadoc tạo ra javadoc cần thiết cho dự án và mục tiêu sử dụng được sử dụng để in các mục tiêu chung có trong tệp xây dựng.

Ví dụ trên cho thấy hai mục tiêu triển khai: deploydeploywar.

Mục tiêu triển khai sao chép các tệp từ thư mục web sang thư mục triển khai bảo tồn dấu thời gian ngày sửa đổi cuối cùng. Điều này rất hữu ích khi triển khai đến một máy chủ hỗ trợ triển khai nóng.

Mục tiêu sạch xóa tất cả các tệp được tạo trước đó.

Mục tiêu triển khai xây dựng tệp chiến tranh và sau đó sao chép tệp chiến tranh vào thư mục triển khai của máy chủ ứng dụng.