Ant-애플리케이션 배치

이전 장에서 응용 프로그램을 패키징하고 폴더에 배포하는 방법을 배웠습니다.

이 장에서는 웹 응용 프로그램을 응용 프로그램 서버 배포 폴더에 직접 배포 한 다음 몇 가지 Ant 대상을 추가하여 서비스를 시작하고 중지 할 것입니다. 계속해서Hello World팩스 웹 애플리케이션. 이것은 이전 장의 연속이며 새로운 구성 요소는bold.

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>

이 예에서는 응용 프로그램 서버로 Tomcat을 사용했습니다. 먼저 빌드 속성 파일에서 몇 가지 추가 속성을 정의했습니다.

  • 그만큼 appserver.home Tomcat 애플리케이션 서버의 설치 ​​경로를 가리 킵니다.

  • 그만큼 appserver.lib Tomcat 설치 폴더의 라이브러리 파일을 가리 킵니다.

  • 그만큼 deploy.path 변수는 이제 Tomcat의 webapp 폴더를 가리 킵니다.

Tomcat의 애플리케이션은 Tomcat 관리자 애플리케이션을 사용하여 중지하고 시작할 수 있습니다. 관리자 애플리케이션의 URL, 사용자 이름 및 비밀번호도 build.properties 파일에 지정됩니다. 다음으로 다음을 포함하는 새로운 CLASSPATH를 선언합니다.catalina-ant.jar. 이 jar 파일은 Apache Ant를 통해 Tomcat 태스크를 실행하는 데 필요합니다.

catalina-ant.jar는 다음 작업을 제공합니다.

Sr. 아니. 속성 및 설명
1

InstallTask

웹 애플리케이션을 설치합니다.

클래스 이름 : org.apache.catalina.ant.InstallTask

2

ReloadTask

웹 애플리케이션을 다시로드하십시오.

클래스 이름 : org.apache.catalina.ant.ReloadTask

ListTask

모든 웹 애플리케이션을 나열합니다.

클래스 이름 : org.apache.catalina.ant.ListTask

4

StartTask

웹 애플리케이션을 시작합니다.

클래스 이름 : org.apache.catalina.ant.StartTask

5

StopTask

웹 애플리케이션을 중지합니다.

클래스 이름 : org.apache.catalina.ant.StopTask

6

ReloadTask

중지하지 않고 웹 애플리케이션을 다시로드합니다.

클래스 이름 : org.apache.catalina.ant.ReloadTask

다시로드 작업에는 다음과 같은 추가 매개 변수가 필요합니다.

  • 관리자 애플리케이션에 대한 URL
  • 웹 애플리케이션을 다시 시작하기위한 사용자 이름
  • 웹 애플리케이션을 다시 시작하기위한 비밀번호
  • 다시 시작할 웹 응용 프로그램의 이름

우리가 발행하자 deploy-war명령을 사용하여 웹 애플리케이션을 Tomcat webapps 폴더에 복사 한 다음 팩스 웹 애플리케이션을 다시로드하겠습니다. 다음 결과는 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

위의 작업이 실행되면 웹 응용 프로그램이 배포되고 웹 응용 프로그램이 다시로드됩니다.