Ant - Создание файлов WAR
Создание файлов WAR с помощью Ant чрезвычайно просто и очень похоже на задачу создания файлов JAR. В конце концов, файл WAR, как и файл JAR, - это просто еще один ZIP-файл.
Задача WAR является расширением задачи JAR, но в нее есть несколько хороших дополнений для управления содержимым папки WEB-INF / classes и создания файла web.xml. Задача WAR полезна для указания конкретного макета файла WAR.
Поскольку задача WAR является расширением задачи JAR, все атрибуты задачи JAR применяются к задаче WAR.
Sr. No. | Атрибуты и описание |
---|---|
1 | webxml Путь к файлу web.xml |
2 | lib Группировка для указания того, что входит в папку WEB-INF \ lib. |
3 | classes Группировка для указания того, что входит в папку WEB-INF \ classes. |
4 | metainf Задает инструкции по созданию файла MANIFEST.MF. |
Продолжая наши Hello WorldПроект приложения факса, давайте добавим новую цель для создания файлов jar. Но прежде давайте рассмотрим военную задачу. Рассмотрим следующий пример -
<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
<fileset dir = "${web.dir}/WebContent">
<include name = "**/*.*"/>
</fileset>
<lib dir = "thirdpartyjars">
<exclude name = "portlet.jar"/>
</lib>
<classes dir = "${build.dir}/web"/>
</war>
Как и в предыдущих примерах, web.dir переменная относится к исходной веб-папке, то есть к папке, содержащей файлы JSP, css, javascript и т. д.
В build.dirПеременная относится к выходной папке - здесь можно найти классы для пакета WAR. Как правило, классы будут объединены в папку WEB-INF / classes файла WAR.
В этом примере мы создаем файл войны с именем fax.war. Файл WEB.XML получается из исходной веб-папки. Все файлы из папки «WebContent» в сети копируются в файл WAR.
Папка WEB-INF / lib заполнена файлами jar из папки Thirdpartyjars. Однако мы исключаем portlet.jar, поскольку он уже присутствует в папке lib сервера приложений. Наконец, мы копируем все классы из веб-папки каталога сборки и помещаем в папку WEB-INF / classes.
Оберните военную задачу в цель Ant (обычно пакет) и запустите ее. Это создаст файл WAR в указанном месте.
Вполне возможно вложить классы, директоры lib, metainf и webinf, чтобы они располагались в разрозненных папках в любом месте структуры проекта. Но лучшие практики предполагают, что ваш веб-проект должен иметь структуру веб-содержимого, аналогичную структуре файла WAR. Структура проекта факсимильного приложения основана на этом базовом принципе.
Чтобы выполнить военную задачу, оберните ее в цель, чаще всего в цель сборки или пакета, и запустите их.
<target name = "build-war">
<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
<fileset dir = "${web.dir}/WebContent">
<include name = "**/*.*"/>
</fileset>
<lib dir = "thirdpartyjars">
<exclude name = "portlet.jar"/>
</lib>
<classes dir = "${build.dir}/web"/>
</war>
</target>
Запуск Ant для этого файла создаст fax.war файл для нас.
Следующий результат является результатом запуска файла Ant -
C:\>ant build-war
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 12.3 seconds
Файл fax.war теперь помещен в папку вывода. Содержимое файла войны будет -
fax.war:
+---jsp This folder contains the jsp files
+---css This folder contains the stylesheet files
+---js This folder contains the javascript files
+---images This folder contains the image files
+---META-INF This folder contains the Manifest.Mf
+---WEB-INF
+---classes This folder contains the compiled classes
+---lib Third party libraries and the utility jar files
WEB.xml Configuration file that defines the WAR package