Как создать war файл

Обновлено: 07.07.2024

Создание WAR-файлов с помощью Ant чрезвычайно просто и очень похоже на задачу создания JAR-файлов. В конце концов, WAR-файл, как и JAR-файл, является просто еще одним ZIP-файлом.

Задача WAR является расширением задачи JAR, но в ней есть несколько приятных дополнений для управления содержимым папки WEB-INF / classes и создания файла web.xml. Задача WAR полезна для указания конкретного макета файла WAR.

Поскольку задача WAR является расширением задачи JAR, все атрибуты задачи JAR применяются к задаче WAR.

Путь к файлу web.xml

Группировка для указания того, что входит в папку WEB-INF \ lib.

Группировка для указания того, что входит в папку WEB-INF \ classes.

Указывает инструкции для генерации файла MANIFEST.MF.

Путь к файлу web.xml

<war destfile = "fax.war" webxml = "$/web.xml" > <fileset dir = "$/WebContent" > <include name = "**/*.*" /> </fileset> <lib dir = "thirdpartyjars" > <exclude name = "portlet.jar" /> </lib> <classes 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. Проект приложения факса имеет структуру, основанную на этом базовом принципе.

Чтобы выполнить военное задание, оберните его внутри цели, чаще всего цели сборки или пакета, и запустите их.

What are the best practices of creating war files (using eclipse) to run on tomcat? tutorials, links, examples are highly appreciated.

13 Answers 13

You can use Ant to set up, compile, WAR, and deploy your solution.

You can then execute one click in Eclipse to run that Ant target. Here are examples of each of the steps:

Preconditions

We'll assume that you have your code organized like:

  • $/src : Java files, properties, XML config files
  • $/web : Your JSP files
  • $/web/lib : Any JARs required at runtime
  • $/web/META-INF : Your manifest
  • $/web/WEB-INF : Your web.xml files

Set up

Define a setup task that creates the distribution directory and copies any artifacts that need to be WARred directly:

Compile

Build your Java files into classes and copy over any non-Java artifacts that reside under src but need to be available at runtime (e.g. properties, XML files, etc.):

Build WAR

Create the WAR itself:

Deploy

Finally, you can set up a task to deploy the WAR directly into your Tomcat deploy location:

Click and go!

Once all this is set up, simply launching the default target from Eclipse will compile, WAR, and deploy your solution.

The advantage of this approach is that it will work outside Eclipse as well as within Eclipse and can be used to easily share your deployment strategy (e.g. via source control) with other developers who are also working on your project.


73.5k 29 29 gold badges 212 212 silver badges 196 196 bronze badges 41.8k 19 19 gold badges 61 61 silver badges 71 71 bronze badges well I want to deploy it to tomcat. How should I change the targer? Could you please elaborate? As long as $ points to your Tomcat context deployment directory, that should do it. No?

I've always just selected Export from Eclipse. It builds the war file and includes all necessary files. Providing you created the project as a web project that's all you'll need to do. Eclipse makes it very simple to do.

2,844 3 3 gold badges 22 22 silver badges 29 29 bronze badges my choice for quick and dirty web apps. writing an ant script just to get a test WAR out is just too much work. another solution instead of creating an ant file would to go to the folder you want to wrap in WAR file and execute this command "jar -cvf name.war *" .

We use Maven (Ant's big brother) for all our java projects, and it has a very nifty WAR plugin. Tutorials and usage can be found there.

It's a lot easier than Ant, fully compatible with Eclipse (use maven eclipse:eclipse to create Eclipse projects) and easy to configure.


17.9k 11 11 gold badges 92 92 silver badges 151 151 bronze badges

A war file is simply a jar file with a war extension, but what makes it work is how the contents is actually structured.

The J2EE/Java EE tutorial can be a start:

And the Servlet specification contains the gory details:

If you create a new web project in Eclipse (I am referring to the Java EE version), the structure is created for you and you can also tell it where your Appserver is installed and it will deploy and start the application for you.

Using the "Export->WAR file" option will let you save the war file.

If you are not sure what to do and are starting from scratch then Maven can help get you started.

By following the the below steps you can get a new war project setup perfectly in eclipse.

  1. Download and install Maven
  2. Go the command line run: mvn archetype:generate
  3. Follow the prompted steps - choosing the simple java web project (18) and a suitable name.
  4. When it is finished run: mvn eclipse:eclipse
  5. Start Eclipse. Choose File -> Import -> Existing project. Select the directory where you ran the mvn goals.
  6. That's it you should now have a very good start to a war project in eclipse
  7. You can create the war itself by running mvn package or deploy it by setting up a server in eclipse and simply adding adding the project to the server.

As some others have said the downside of using maven is that you have to use the maven conventions. But I think if you are just starting out, learning the conventions is a good idea before you start making your own. There's nothing to stop you changing/refactoring to your own preferred method at a later point.

Hope this helps.

8,212 8 8 gold badges 42 42 silver badges 66 66 bronze badges


73.5k 29 29 gold badges 212 212 silver badges 196 196 bronze badges

Use the following command outside the WEB-INF folder. This should create your war file and is the quickest method I know.

(You will need JDK 1.7+ installed and environment variables that point to the bin directory of your JDK.)

726 1 1 gold badge 9 9 silver badges 27 27 bronze badges

Use ant build code I use this for my project SMS

Another option would be to build it automatically using Eclipse. Of course if you have continuous integration environment Ant or Maven is recommended. The export alternative is not very convenient because you have to configure every time the export properties.

Enable "Project Archives" support; this might depend on your project (I used it on Java EE/Web project). Right-click project root directory; Configure -> Add Project Archives Support.

Go and create a new archive in the "Project Archives" top dir. You have only jar option, but name you archive *.war.

Configure Fileset-s, i.e what files to be included. Typical is to configure two filesets similar how the Web Deployment Assembly (project property) is configured.

  • copy /WebContent to /
  • copy /build/classes to WEB-INF/classes (create this fileset after you define the WEB-INF/classes directory in the archive)

You might need to tweek the fileset exclude property depending where you placed some of the config files or you might need more filesets, but the idea is that once you configured this you don't need to change it.

Build the archive manually or publish directly to server; but is also automatically built for you by Eclipse

каковы наилучшие методы создания файлов войны (с помощью eclipse) для запуска на tomcat? учебники, ссылки, примеры высоко ценятся.

можно использовать АНТ для настройки, компиляции,войны и разверните свое решение.

затем вы можете выполнить один клик в Eclipse, чтобы запустить эту цель муравья. Вот примеры каждого из шагов:

предпосылки

мы предположим, что у вас есть код, организованный как:

  • $/src : файлы Java, свойства, файлы конфигурации XML
  • $/web : ваш JSP файлы
  • $/web/lib : любые банки, необходимые во время выполнения
  • $/web/META-INF : манифест
  • $/web/WEB-INF : веб.xml-файлы

настройка

определение setup задача, которая создает каталог дистрибутива и копирует любые артефакты, которые необходимо напрямую обработать:

Compile

создайте свои файлы Java в классы и скопируйте все артефакты, не относящиеся к Java, которые находятся под src но нужно быть доступна во время выполнения (например, свойства, XML-файлы и т. д.):

построить войны

создать саму войну:

развернуть

наконец, вы можете настроить задачу для развертывания войны непосредственно в вашем Tomcat deploy location:

нажмите и вперед!

как только все это настроено, просто запустите default target из Eclipse будет компилировать, воевать и развертывать ваше решение.

в преимущество этого подхода заключается в том, что он будет работать как за пределами Eclipse, так и внутри Eclipse и может использоваться для простого обмена стратегией развертывания (например, с помощью системы управления версиями) с другими разработчиками, которые также работают над вашим проектом.

Я всегда выбирал экспорт из Eclipse. Он создает файл War и включает в себя все необходимые файлы. Если вы создали проект как веб-проект, это все, что вам нужно сделать. Затмение делает это очень просто сделать.

мы используем Maven (старший брат Ant) для всех наших проектов java, и у него есть очень отличный плагин WAR. Учебники и использование можно найти там.

это намного проще, чем Ant, полностью совместимый с Eclipse (используйте Maven eclipse: затмение для создания проектов Eclipse) и прост в настройке.

файл war-это просто файл jar с расширением war, но что заставляет его работать, так это то, как на самом деле структурировано содержимое.

учебник J2EE/Java EE может быть началом:

и спецификация сервлета содержит кровавые детали:

при создании нового веб-проекта в Eclipse (я имею в виду версию Java EE) структура создана для вас, и вы также можете сказать, где установлен ваш Appserver, и он развернет и запустит приложение для вас.

использование опции "экспорт - > файл войны" позволит вам сохранить файл войны.

Если вы не уверены, что делать и начинаете с нуля, то знаток может помочь вам начать работу.

следуя приведенным ниже шагам, вы можете получить новую настройку проекта войны в eclipse.

  1. скачать и установить Maven
  2. перейти в командную строку run: mvn archetype:generate
  3. следуйте инструкциям-выберите простой веб-проект java (18) и подходящее имя.
  4. когда он закончил работать: mvn eclipse:eclipse
  5. Запустить Eclipse. Выберите Файл - > импорт - > существующий проект. Выберите каталог, в котором вы запустили цели mvn.
  6. вот и все, теперь у вас должно быть очень хорошее начало военного проекта в eclipse
  7. вы можете создать саму войну, запустив mvn package или разверните его, настроив сервер в eclipse и просто добавив проект на сервер.

как некоторые другие сказали, недостатком использования maven является то, что вы должны использовать конвенций Мэйвен. Но я думаю, что если вы только начинаете, изучение конвенций-хорошая идея, прежде чем вы начнете делать свои собственные. Ничто не помешает вам изменить/рефакторинг на ваш собственный предпочтительный метод на более позднем этапе.

надеюсь, что это помогает.

использовать код сборки ant Я использую это для своего проекта SMS

другой вариант - создать его автоматически с помощью Eclipse. Конечно, если у вас есть непрерывная среда интеграции, рекомендуется Ant или Maven. Альтернатива экспорта не очень удобна, так как необходимо настраивать каждый раз свойства экспорта.

включить поддержку "архивы проектов"; это может зависеть от вашего проекта (я использовал его на Java EE/Web project). Щелкните правой кнопкой мыши корневой каталог проекта; настройка -> Добавить Поддержку Архивов Проекта.

перейти и создать новый архив в" Project Archives " top dir. У вас есть только опция jar, но имя вы архив *.война.

настройка набора файлов, i.e какие файлы необходимо включить. Обычно настраиваются два набора файлов, похожих на конфигурацию сборки веб-развертывания (свойство project).

  • копировать в папку WebContent /
  • копировать / строить / классы в WEB-INF / classes (создайте это набор файлов после определения каталога WEB-INF / classes в архиве)

вам может потребоваться настроить свойство fileset exclude в зависимости от того, где вы разместили некоторые файлы конфигурации, или вам может понадобиться больше наборов файлов, но идея в том, что после настройки этого вам не нужно его изменять.

создайте архив вручную или опубликуйте непосредственно на сервере; но также автоматически создается для вас Eclipse

Я скопировал на webapps каталог Tomcat, и я могу получить доступ localhost:8080 .

Теперь, как Tomcat развернет его, я имею в виду, мне нужно открыть его в браузере? Как получить доступ к приложению?

развертывание или повторное развертывание файлов war происходит автоматически по умолчанию-после копирования / перезаписи файла sample.war , проверьте, ваш webapps папка для извлеченной папки sample .

если он не открывается должным образом, проверьте файлы журнала (например, tomcat/logs/catalina.out) для проблем с развертыванием.

Шаг 1. здесь я разворачиваюсь pos.война!--2--> сначала перейдите в папку tomcat webapps и вставьте ее

enter image description here

Шаг 2. перейти к tomcat ->bin папка запустить tomcat, нажав Автозагрузка.летучая мышь!--2-->

Шаг 3. перейдите в браузере пишу localhost:порт/имя проекта например. localhost: 8080 / pos (здесь мой tomcat работает на порту 8080)

enter image description here

вам просто нужно поместить файл war в webapps, а затем запустить сервер.

Он будет развернут.

в противном случае вы также можете использовать tomcat manager a webfront для загрузки и развертывания вашей войны удаленно.

ручные шаги-Windows

скопировать .war-файл (напр.: городе.войны) %CATALINA_HOME%\webapps (например: C:\tomcat\webapps )

ваш .файл war будет автоматически извлечен в папку который имеет то же имя (без расширения) (например: prj)

на %CATALINA_HOME%\conf\server.xml и забрать порт для протокола HTTP. <Connector port="8080" . /> . Неисполнение значение 8080.

доступ к следующему URL:

не пытайтесь получить доступ к URL без resourceName потому что это не будет работать, если отсутствует файл типа index.html , или если нет шаблона url, как" / " или " /* " в web.в XML.

доступные основные пути здесь: [<protocol>://]localhost:<port>/manager/html (например: http://localhost:8080/manager/html ) и у них true в колонке "работает".

использование UI manager:

на [<protocol>://]localhost:<port>/manager/html/ (обычно localhost:8080/manager/html/ )

это также достижимо из [<protocol>://]localhost:<port> > Менеджер App)

на %CATALINA_HOME%\conf\tomcat-users.xml и убедитесь, что вы включили такую строку:

в развернуть раздел, файл войны для развертывания подраздела, нажмите на обзор. .

Deploy browse

выбрать .war-файл (напр.: городе.война) > нажмите на развернуть.

в дополнение к уже упомянутым способам (отбрасывание war-файла непосредственно в webapps - directory), если у вас установлено приложение Tomcat Manager, вы также можете развернуть war-файлы через браузер. Чтобы добраться до менеджера, перейдите в корень сервера (в вашем случае localhost: 8080), выберите "Tomcat Manager" (на данный момент вам нужно знать имя пользователя и пароль для Tomcat-пользователя с "manager"-ролью, пользователи определены в tomcat-пользователи.в XML в conf - каталог установки tomcat). На открывшейся странице прокрутите вниз, пока не увидите "Deploy"-часть страницы, где вы можете нажать "browse", чтобы выбрать файл WAR для развертывания с вашего локального компьютера. После выбора файла нажмите кнопку развернуть. Через некоторое время менеджер должен сообщить вам, что приложение было развернуто (и если все прошло хорошо, начал).

здесьболее длинные инструкции и другие инструкции от Tomcat 7 страница документации.

  1. либо вы можете выполнить горячее развертывание (горячее развертывание означает развертывание при запуске/запуске сервера).
  2. или вы можете выполнить холодное развертывание (холодное развертывание означает развертывание при остановке сервера).

просто используйте консоль tomcat manager для развертывания консоли или просто скопируйте и вставьте приложение в папку webapp каталога tomcat_home вашего сервера.

Примечание: убедитесь, что ваша война размер файла более 52 МБ (значение по умолчанию), вам нужно сделать два небольших изменения в web.xml-файл приложения-менеджера вашей папки webapp (приложение-менеджер предоставляется Apache tomcat по умолчанию при установке сервера).

перейдите в интернет.xml приложения диспетчера (например, он может подчиняться / tomcat7/webapps/manager/WEB-INF / web.XML.

Increase the max-file-size and max-request-size values in web.xml file:

увеличить размер, поставив значения <max-file-size> и <max-request-size> согласно вашему требованию.

Это работает для меня:

Если вы попытаетесь загрузить новый файл как файл войны, с tomcat все еще работает, он попытается расширить его, прежде чем все там. Она потерпит неудачу. Потерпев неудачу, он не будет пытаться снова. Таким образом, загрузка файла www, а затем переименование его, позволяет весь файл войны присутствовать до tomcat замечает его.

подсказка, не забудьте проверить, что владелец файла war-tomcat (используйте chown)

если вы установили tomcat7 с помощью apt-get в linux затем разверните приложение в /var/lib/tomcat7/webapps/

кроме того, продолжайте следить за журналом tomcat, чтобы вы могли убедиться, что ваше приложение действительно заключает мир с tomcat.

Читайте также: