Ant - Uygulamaları Dağıtma

Önceki bölümde, bir uygulamayı nasıl paketleyeceğimizi ve bir klasöre yerleştireceğimizi öğrendik.

Bu bölümde, web uygulamasını doğrudan uygulama sunucusu dağıtım klasörüne yerleştireceğiz, ardından hizmetleri başlatmak ve durdurmak için birkaç Ant hedefi ekleyeceğiz. Devam edelimHello Worldfaks web uygulaması. Bu, bir önceki bölümün devamıdır, yeni bileşenlerin altı çizilmiştir.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>

Bu örnekte, Tomcat'i uygulama sunucumuz olarak kullandık. İlk olarak, yapı özellikleri dosyasında bazı ek özellikler tanımladık.

  • appserver.home Tomcat uygulama sunucusunun kurulum yolunu gösterir.

  • appserver.lib Tomcat kurulum klasöründeki kitaplık dosyalarına işaret eder.

  • deploy.path değişken şimdi Tomcat'teki webapp klasörünü gösteriyor.

Tomcat'teki uygulamalar Tomcat yönetici uygulaması kullanılarak durdurulabilir ve başlatılabilir. Yönetici uygulamasının URL'si, kullanıcı adı ve parola da build.properties dosyasında belirtilir. Ardından, şunu içeren yeni bir CLASSPATH beyan ederizcatalina-ant.jar. Bu jar dosyası, Tomcat görevlerini Apache Ant aracılığıyla yürütmek için gereklidir.

Catalina-ant.jar aşağıdaki görevleri sağlar -

Sr.No. Özellikler ve Açıklama
1

InstallTask

Bir web uygulaması kurar.

Sınıf Adı: org.apache.catalina.ant.InstallTask

2

ReloadTask

Bir web uygulamasını yeniden yükleyin.

Sınıf Adı: org.apache.catalina.ant.ReloadTask

3

ListTask

Tüm web uygulamalarını listeler.

Sınıf Adı: org.apache.catalina.ant.ListTask

4

StartTask

Bir web uygulaması başlatır.

Sınıf Adı: org.apache.catalina.ant.StartTask

5

StopTask

Bir web uygulamasını durdurur.

Sınıf Adı: org.apache.catalina.ant.StopTask

6

ReloadTask

Durmadan bir web uygulamasını yeniden yükler.

Sınıf Adı: org.apache.catalina.ant.ReloadTask

Yeniden yükleme görevi aşağıdaki ek parametreleri gerektirir -

  • Yönetici uygulamasının URL'si
  • Web uygulamasını yeniden başlatmak için kullanıcı adı
  • Web uygulamasını yeniden başlatmak için şifre
  • Yeniden başlatılacak web uygulamasının adı

Verelim deploy-warkomutunu web uygulamasını Tomcat webapps klasörüne kopyalayın ve ardından Faks Web uygulamasını yeniden yüklememize izin verin. Aşağıdaki sonuç, Ant dosyasını çalıştırmanın sonucudur -

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

Yukarıdaki görev çalıştırıldığında, web uygulaması dağıtılır ve web uygulaması yeniden yüklenir.