Учебники

Муравей — Упаковка

Мы изучили различные аспекты Ant с помощью веб-приложения Hello World Fax по частям.

Теперь пришло время собрать все воедино, чтобы создать полный и полный файл build.xml. Рассмотрим файлы build.properties и build.xml следующим образом:

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>

В этом примере —

  • Сначала мы объявляем путь к папке webapps в Tomcat в файле свойств сборки как переменную deploy.path .

  • Мы также объявляем исходную папку для java-файлов в переменной src.dir .

  • Затем мы объявляем исходную папку для веб-файлов в переменной web.dir . javadoc.dir — это папка для хранения документации java, а build.dir — это путь для хранения выходных файлов сборки.

  • Затем мы объявляем название веб-приложения, в нашем случае это факс .

  • Мы также определяем путь мастер-класса, который содержит файлы JAR, присутствующие в папке WEB-INF / lib проекта.

  • Мы также включаем файлы классов, присутствующие в build.dir, в путь мастер-класса.

  • Цель Javadoc создает Javadoc, необходимый для проекта, а цель использования используется для печати общих целей, присутствующих в файле сборки.

Сначала мы объявляем путь к папке webapps в Tomcat в файле свойств сборки как переменную deploy.path .

Мы также объявляем исходную папку для java-файлов в переменной src.dir .

Затем мы объявляем исходную папку для веб-файлов в переменной web.dir . javadoc.dir — это папка для хранения документации java, а build.dir — это путь для хранения выходных файлов сборки.

Затем мы объявляем название веб-приложения, в нашем случае это факс .

Мы также определяем путь мастер-класса, который содержит файлы JAR, присутствующие в папке WEB-INF / lib проекта.

Мы также включаем файлы классов, присутствующие в build.dir, в путь мастер-класса.

Цель Javadoc создает Javadoc, необходимый для проекта, а цель использования используется для печати общих целей, присутствующих в файле сборки.

В приведенном выше примере показаны две цели развертывания: deploy и deploywar.

Цель развертывания копирует файлы из веб-каталога в каталог развертывания, сохраняя отметку даты последнего изменения времени. Это полезно при развертывании на сервере, который поддерживает горячее развертывание.

Чистая цель очищает все ранее созданные файлы.

Цель deploywar создает файл war, а затем копирует файл war в каталог deploy сервера приложений.