Муравей - Строительные проекты
Теперь, когда мы узнали о типах данных в 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 папка.