Ant - Triển khai ứng dụng

Trong chương trước, chúng ta đã học cách đóng gói một ứng dụng và triển khai nó vào một thư mục.

Trong chương này, chúng ta sẽ triển khai ứng dụng web trực tiếp đến thư mục triển khai máy chủ ứng dụng, sau đó chúng ta sẽ thêm một vài mục tiêu Ant để bắt đầu và dừng các dịch vụ. Hãy để chúng tôi tiếp tục vớiHello Worldứng dụng web fax. Đây là phần tiếp theo của chương trước, các thành phần mới được đánh dấu trongbold.

build.properties

# Ant properties for building the springapp

appserver.home = c:\\install\\apache-tomcat-7.0.19
# for Tomcat 5 use $appserver.home}/server/lib
# for Tomcat 6 use $appserver.home}/lib
appserver.lib = ${appserver.home}/lib

deploy.path = ${appserver.home}/webapps

tomcat.manager.url = http://www.tutorialspoint.com:8080/manager
tomcat.manager.username = tutorialspoint
tomcat.manager.password = secret

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>

   <!-- ============================================================ -->
   <!-- Tomcat tasks -->
   <!-- ============================================================ -->

   <path id = "catalina-ant-classpath">
      <!-- We need the Catalina jars for Tomcat -->
      <!--  * for other app servers - check the docs -->
      
      <fileset dir = "${appserver.lib}">
         <include name = "catalina-ant.jar"/>
      </fileset>
   </path>

   <taskdef name = "install" classname = "org.apache.catalina.ant.InstallTask">
      <classpath refid = "catalina-ant-classpath"/>
   </taskdef>

   <taskdef name = "reload" classname = "org.apache.catalina.ant.ReloadTask">
      <classpath refid = "catalina-ant-classpath"/>
   </taskdef>

   <taskdef name = "list" classname = "org.apache.catalina.ant.ListTask">
      <classpath refid = "catalina-ant-classpath"/>
   </taskdef>

   <taskdef name = "start" classname = "org.apache.catalina.ant.StartTask">
      <classpath refid = "catalina-ant-classpath"/>
   </taskdef>

   <taskdef name = "stop" classname = "org.apache.catalina.ant.StopTask">
      <classpath refid = "catalina-ant-classpath"/>
   </taskdef>

   <target name = "reload" description = "Reload application in Tomcat">
      <reload url = "${tomcat.manager.url}"username = "${tomcat.manager.username}"
         password = "${tomcat.manager.password}" path = "/${name}"/>
   </target>
</project>

Trong ví dụ này, chúng tôi đã sử dụng Tomcat làm máy chủ ứng dụng của mình. Đầu tiên, trong tệp thuộc tính xây dựng, chúng tôi đã xác định một số thuộc tính bổ sung.

  • Các appserver.home trỏ đến đường dẫn cài đặt đến máy chủ ứng dụng Tomcat.

  • Các appserver.lib trỏ đến các tệp thư viện trong thư mục cài đặt Tomcat.

  • Các deploy.path biến bây giờ trỏ đến thư mục ứng dụng web trong Tomcat.

Các ứng dụng trong Tomcat có thể được dừng và bắt đầu sử dụng ứng dụng trình quản lý Tomcat. URL cho ứng dụng người quản lý, tên người dùng và mật khẩu cũng được chỉ định trong tệp build.properties. Tiếp theo, chúng tôi khai báo một CLASSPATH mới chứacatalina-ant.jar. Tệp jar này được yêu cầu để thực thi các tác vụ Tomcat thông qua Apache Ant.

Catalina-ant.jar cung cấp các tác vụ sau:

Sr.No. Thuộc tính & Mô tả
1

InstallTask

Cài đặt ứng dụng web.

Tên lớp: org.apache.catalina.ant.InstallTask

2

ReloadTask

Tải lại ứng dụng web.

Tên lớp: org.apache.catalina.ant.ReloadTask

3

ListTask

Liệt kê tất cả các ứng dụng web.

Tên lớp: org.apache.catalina.ant.ListTask

4

StartTask

Khởi động một ứng dụng web.

Tên lớp: org.apache.catalina.ant.StartTask

5

StopTask

Dừng ứng dụng web.

Tên lớp: org.apache.catalina.ant.StopTask

6

ReloadTask

Tải lại ứng dụng web mà không dừng lại.

Tên lớp: org.apache.catalina.ant.ReloadTask

Nhiệm vụ tải lại yêu cầu các tham số bổ sung sau:

  • URL đến ứng dụng người quản lý
  • Tên người dùng để khởi động lại ứng dụng web
  • Mật khẩu để khởi động lại ứng dụng web
  • Tên của ứng dụng web sẽ được khởi động lại

Hãy để chúng tôi phát hành deploy-warlệnh sao chép ứng dụng web vào thư mục ứng dụng web Tomcat và sau đó để chúng tôi tải lại ứng dụng Web Fax. Kết quả sau là kết quả của việc chạy tệp Ant -

C:\>ant deploy-war
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

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

BUILD SUCCESSFUL
Total time: 3.1 seconds

Khi tác vụ trên được chạy, ứng dụng web sẽ được triển khai và ứng dụng web được tải lại.