Муравей - Строительные проекты

Теперь, когда мы узнали о типах данных в Ant, пора применить эти знания на практике. В этой главе мы построим проект. Цель этой главы - создать файл Ant, который компилирует классы java и помещает их в папку WEB-INF \ classes.

Рассмотрим следующую структуру проекта -

  • Скрипты базы данных хранятся в db папка.

  • Исходный код Java хранится в src папка.

  • Изображения, js, META-INF, стили (css) хранятся в war папка.

  • JSP хранятся в jsp папка.

  • Сторонние файлы jar хранятся в lib папка.

  • Файлы классов java хранятся в WEB-INF\classes папка.

Этот проект формирует Hello World Приложение для работы с факсом до конца этого руководства.

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

Вот файл build.xml, необходимый для этого проекта. Давайте рассмотрим это по частям.

<?xml version = "1.0"?>
<project name = "fax" basedir = "." default = "build">
   <property name = "src.dir" value = "src"/>
   <property name = "web.dir" value = "war"/>
   <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 = "build" description = "Compile source tree java files">
      <mkdir dir = "${build.dir}"/>
      
      <javac destdir = "${build.dir}" source = "1.5" target = "1.5">
         <src path = "${src.dir}"/>
         <classpath refid = "master-classpath"/>
      </javac>
   </target>
 
   <target name = "clean" description = "Clean output directories">
      <delete>
         <fileset dir = "${build.dir}">
            <include name = "**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Во-первых, давайте объявим некоторые свойства для папок source, web и build.

<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

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

  • src.dir относится к исходной папке проекта, в которой можно найти исходные файлы Java.

  • web.dir относится к исходной веб-папке проекта, где вы можете найти JSP, web.xml, css, javascript и другие файлы, связанные с веб

  • build.dir относится к выходной папке компиляции проекта.

Свойства могут относиться к другим свойствам. Как показано в приведенном выше примере,build.dir свойство делает ссылку на web.dir свойство.

В этом примере src.dir относится к исходной папке проекта.

Целью нашего проекта по умолчанию является compileцель. Но сначала давайте посмотрим наclean цель.

Чистая цель, как следует из названия, удаляет файлы в папке сборки.

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

Путь к мастер-классу содержит информацию о пути к классам. В этом случае он включает классы в папке сборки и файлы jar в папке lib.

<path id = "master-classpath">
   <fileset dir = "${web.dir}/WEB-INF/lib">
      <include name = "*.jar"/>
   </fileset>
   
   <pathelement path = "${build.dir}"/>
</path>

Наконец, цель сборки для сборки файлов. Первым делом создаем каталог сборки, если он не существует. Затем мы выполняем команду javac (указав jdk1.5 в качестве нашей целевой компиляции). Мы предоставляем исходную папку и путь к классам для задачи javac и просим ее удалить файлы классов в папку сборки.

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

Выполнение Ant для этого файла компилирует исходные файлы Java и помещает классы в папку сборки.

Следующий результат является результатом запуска файла Ant -

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

BUILD SUCCESSFUL
Total time: 6.3 seconds

Файлы компилируются и помещаются в build.dir папка.