Теперь, когда мы узнали о типах данных в Ant, пришло время применить эти знания в действии. Мы будем строить проект в этой главе. Цель этой главы — создать файл Ant, который компилирует классы java и помещает их в папку WEB-INF \ classes.
Рассмотрим следующую структуру проекта —
-
Скрипты базы данных хранятся в папке db .
-
Исходный код Java хранится в папке src .
-
Изображения, js, META-INF, стили (css) хранятся в папке war .
-
JSP хранятся в папке jsp .
-
JAR-файлы сторонних производителей хранятся в папке lib .
-
Файлы классов Java хранятся в папке WEB-INF \ classes .
Скрипты базы данных хранятся в папке db .
Исходный код Java хранится в папке src .
Изображения, js, META-INF, стили (css) хранятся в папке war .
JSP хранятся в папке jsp .
JAR-файлы сторонних производителей хранятся в папке lib .
Файлы классов Java хранятся в папке WEB-INF \ classes .
Этот проект формирует приложение Hello World Fax для оставшейся части этого урока.
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 ссылается на выходную папку компиляции проекта.
src.dir ссылается на исходную папку проекта, где можно найти исходные файлы Java.
web.dir — это папка с исходным веб- сайтом проекта, в которой вы можете найти файлы JSP, web.xml, css, javascript и другие файлы, относящиеся к сети.
build.dir ссылается на выходную папку компиляции проекта.
Свойства могут ссылаться на другие свойства. Как показано в приведенном выше примере, свойство build.dir ссылается на свойство web.dir .
В этом примере src.dir ссылается на исходную папку проекта.
Целью по умолчанию нашего проекта является цель компиляции . Но сначала давайте посмотрим на чистую цель.
Чистая цель, как следует из названия, удаляет файлы в папке сборки.
<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 .