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