Как создать военный файл в Intellij Idea

Обновлено: 03.07.2024

Этот пост является четвертым в серии постов о введении в разработку веб-приложений на основе сервлетов на Java.

В предыдущем посте показано, как создавать проекты Maven, упаковывать и развертывать их на автономном или встроенном сервере с помощью непосредственного использования архетипа Maven; но поскольку на практике для разработки будет использоваться IDE, в этом посте показано, как сделать то же самое с помощью IDE.

В этом посте используется Intellij IDEA. При использовании другой IDEA (скажем, Eclipse или NetBeans) вам придется обратиться к разделу справки или онлайн-документации для получения информации о соответствующих шагах в используемой вами среде IDE.

Этот пост взят из статьи Разработка приложения Java EE. Сообщение, в котором показано, как создать и запустить веб-приложение JEE, но оно не делает этого с помощью Maven и использует Glassfish в качестве сервера приложений вместо интересующего нас Tomcat.

Этот пост предназначен для изменения шагов, чтобы включить использование Maven, а затем показать шаги по развертыванию на Tomcat


Перед началом работы убедитесь, что на вашем компьютере установлено следующее программное обеспечение:

  • Выпуск IntelliJ IDEA ULTIMATE.
  • Комплект разработки Java SE (JDK), версия 6 или более поздняя. Загрузите Oracle JDK.
  • Сервер Tomcat, версия 7 или более поздняя. Загрузите Tomcat и следуйте инструкциям по установке.
  • Maven, версия 3 или более поздняя. Загрузите Maven и следуйте инструкциям по установке.
  • Веб-браузер.
  1. Нажмите «Создать новый проект» на экране приветствия или выберите «Файл | Новый | Проект.
  2. Откроется мастер создания нового проекта.
  3. На панели слева выберите Maven.
  4. Если JDK, который вы хотите использовать, уже определен в IntelliJ IDEA, выберите этот JDK из списка Project SDK и перейдите к следующему шагу.
  5. В противном случае нажмите «Создать», выберите JDK и выберите папку установки JDK в открывшемся диалоговом окне.
    1. Нажмите "Далее".
      1. Укажите GroupId, Artifactid и версию.
      2. Нажмите "Далее".
      3. Дайте проекту имя и местоположение проекта.
      4. Нажмите «Готово» и подождите, пока IntelliJ IDEA создаст проект.

      sample-webapp — это папка модуля, содержащая проект. Папка .idea и файл sample-webapp.iml содержат данные конфигурации для нашего проекта и модуля соответственно. Папка src предназначена для исходного кода Java. Стоит отметить, что src/main/webapp отсутствует в файловой системе выше. Его можно добавить вручную, особенно если вы хотите работать с шаблонами, а также когда вы хотите создать приложение, использующее файл web.xml (который затем будет помещен в src/webapp/WEB-INF/web.xml). Не добавляйте этот каталог (или web.xml), так как в иллюстрации не будут использоваться какие-либо файлы, необходимые в каталоге webapp. Внешние библиотеки включают файлы JDK и JAR.

      1. Нажмите «Просмотр» | Окно инструментов | Проекты Maven
        Это гарантирует, что окно инструментов Maven будет отображаться справа
        1. Нажмите значок настроек в верхней части представления проектов Maven.
        2. Убедитесь, что домашний каталог Maven, файл настроек пользователя и локальный репозиторий указывают на правильные места, которые будут зависеть от того, как и где вы установили Maven.
          1. Нажмите «Выполнить» | Изменить конфигурацию
            1. Слева нажмите | Сервер Tomcat | Местный
              1. При этом откроется диалоговое окно конфигурации.
              1. Дайте серверу имя.
              2. Нажмите «Настроить». Это вызовет диалоговое окно, в котором вы можете установить домашний каталог Tomcat и базовый каталог Tomcat. Настройте их так, чтобы они указывали на соответствующее расположение, как определено в том, как Tomcat был установлен на вашем компьютере.


              Запуск приложения

              В правой верхней части рабочей области нажмите



              IntelliJ IDEA компилирует исходный код и создает артефакт приложения. После этого в нижней части IDE откроется окно инструмента «Выполнить». IntelliJ IDEA запускает сервер и развертывает на нем артефакт.

              Я работал с Eclipse почти четыре года и начал работать с IntelliJ всего три дня назад. Точно так же, как мы щелкаем правой кнопкой мыши проект в eclipse и говорим «экспортировать как войну», и он напрямую развертывается на моем сервере приложений, могу ли я сделать то же самое/аналогично в IntelliJ?

              Любая помощь будет полезна.

              PS: может быть глупо спрашивать, но будут ли mac/windows иметь значение?

              есть некоторые различия между "развертыванием через maven" и "развертыванием через IntelliJ". Вы можете с комфортом использовать IntelliJ в обоих направлениях.

              5 ответов 5

              У IntelliJ другой процесс создания войны:

              Перейти -> Файлы -> Структура проекта -> Артефакты

              На вкладке артефактов вы увидите маленькую кнопку + в правом верхнем углу. Нажмите на нее и заполните данные правой панели, такие как имя и выходной каталог.

              Не забудьте создать файл манифеста.Сохранить расположение по умолчанию для файла манифеста.

              После создания манифеста нажмите «Применить» -> «ОК».

              Теперь вы можете перейти к Build-> Build Artifact.

              Ваш файл .war будет готов в выходной папке, указанной выше.

              Даже после очистки и перестройки я обнаружил, что это создает войну, которая загружается в TC, но завершается с ошибкой 404. Кто-нибудь еще получает такое же/решение?

              Это абсолютно работает!

              Во-первых:

              Вау, я читал и пробовал предоставленные ответы, и я не мог поверить, почему никто не упоминает корень проблемы, который заключается в том, что «НЕ УПОМИНАНИЕ ТАКОГО ВАШЕГО РЕЗУЛЬТАТА БЫТЬ», который является войной, поэтому давайте сначала расскажем, что мы хотите, добавив следующий тег в ваш pom.xml

              куда вставить? в любом месте внутри тега

              Теперь поговорим о методе

              Вы можете установить плагин «Maven Helper», так как он хорошо поможет новичкам, но если у вашего intelij хорошее рукопожатие с maven, он автоматически или вручную обновит ваш проект и добавит возможность войны в ваши настройки maven (панель, которую вы см. в правой части редактора, где упоминается Maven), там вы нажимаете «Плагины», и вы должны увидеть, что теперь у вас есть война (org.apache.maven.plugins:maven-war-plugin:xxx), когда вы нажимаете + вы см. множество вариантов, war:war и war:exploded — ваши друзья, делайте то, что вам нравится

              введите здесь описание изображения

              Используйте clean, чтобы стереть предыдущий беспорядок, используйте war:war для создания файла .war, а для манифеста подойдет war:exploded, если это не помогло для манифеста, используйте

              Файл | Структура проекта и щелкните Артефакты. Нажмите «Добавить +» и «Веб-приложение: война взорвалась», после чего откроется ваш проект, выберите его и нажмите «ОК», а затем перейдите и выполните «Сборка»> «Создать артефакт».

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

              basic_artifact_configuration.jpg

              Настройка артефакта для развертывания включает:

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

              Настройте основные параметры артефакта

              Откройте диалоговое окно "Структура проекта" (например, Ctrl+Alt+Shift+S).

              Нажмите "Артефакты", чтобы открыть страницу "Артефакты".

              Выполните одно из следующих действий:

              Чтобы использовать предопределенный развернутый артефакт каталога, выберите артефакт war:exploded из списка на левой панели. При необходимости измените имя и выходной каталог артефакта в соответствующих полях на правой панели.

              Чтобы создать новый артефакт, нажмите «Создать» на левой панели и выберите тип артефакта в списке «Создать».

              Чтобы приложение было развернуто как каталог, выберите "Веб-приложение: развернуто" .

              Чтобы приложение было развернуто в упакованном виде, выберите Веб-приложение: Архив .

              На правой панели укажите общие параметры артефакта, такие как имя и выходной каталог, в соответствующих полях.

              Чтобы добавить ресурсы статического веб-контента

              Откройте нужный артефакт и перейдите на правую панель, вкладку "Макет вывода".

              Выделив выходной корневой узел, выберите пункт «Создать каталог» в контекстном меню или нажмите кнопку «Создать каталог» на панели инструментов. В открывшемся диалоге укажите имя новой папки, например Ресурсы:

              Выбрав новую папку, выберите пункт «Добавить копию элемента» в контекстном меню или нажмите кнопку «Добавить копию элемента» на панели инструментов .

              В контекстном меню выберите пункт «Содержимое каталога». В открывшемся диалоговом окне выберите каталог, в котором хранятся необходимые ресурсы веб-контента.

              Вы можете использовать Docker для запуска сервера Tomcat и развертывания веб-приложений Java. В этом руководстве описывается, как создать простое веб-приложение Java, создать файл ресурса развертываемого веб-приложения (WAR), а затем развернуть его на сервере Tomcat, работающем как контейнер Docker.

              Прежде чем начать, убедитесь, что интеграция с Docker правильно настроена.

              Создать веб-приложение Java

              В главном меню выберите Файл | Новый | Проект .

              В диалоговом окне "Новый проект" выберите Java Enterprise . Введите имя для своего проекта: DockerJavaWebApp .

              В этом руководстве используйте Java 1.8 в качестве SDK проекта и оставьте другие настройки по умолчанию: Maven в качестве инструмента сборки и JUnit в качестве средства выполнения тестов.Выберите Java в качестве языка проекта.

              Затем нажмите "Далее" .

              На следующем шаге мастера выберите спецификацию веб-профиля и нажмите "Готово".

              В окне инструмента "Проект" щелкните правой кнопкой мыши каталог src/main/java, выберите "Создать" и нажмите "Создать новый сервлет" .

              В диалоговом окне New Servlet введите имя MyServlet и нажмите OK .

              Откройте файл src/main/java/MyServlet.java и замените метод doGet() по умолчанию следующим:

              Добавьте необходимые импорты и библиотеки, если будет предложено это сделать.

              В окне инструмента "Проект" щелкните правой кнопкой мыши каталог src/main/webapp, выберите "Создать" и выберите "JSP/JSPX".

              В диалоговом окне "Создание страницы JSP/JSPX" введите индекс имени и нажмите "ОК" .

              Откройте файл src/main/webapp/index.jsp и вставьте следующий код HTML в качестве точки входа для сервлета:

              Откройте файл src/main/webapp/WEB-INF/web.xml и вставьте следующую конфигурацию сервлета:

              Убедитесь, что имя вашего сервлета соответствует указанному регистру.

              Откройте меню "Сборка" и нажмите "Перестроить проект", чтобы убедиться, что сервлет компилируется правильно. В журнале событий должно быть указано, что сборка завершена успешно, и вы должны увидеть скомпилированный файл target/classes/MyServlet.class .

              Создать артефакт ВОЙНЫ

              В главном меню выберите Сборка | Создавайте артефакты .

              В диалоговом окне "Сборка артефакта" выберите сборку артефакта DockerJavaWebApp:war.

              Вы должны увидеть цель артефакта/DockerJavaWebApp-1.0-SNAPSHOT.war .

              Разверните приложение на сервере Tomcat

              Откройте окно инструмента "Службы": Вид | Инструментальные окна | Услуги или Alt+8 . В окне инструмента Docker щелкните правой кнопкой мыши узел "Изображения" и выберите "Получить образ" .

              В настроенном узле подключения Docker выберите Образы и укажите, что необходимо извлечь образ сервера Tomcat: tomcat . Нажмите Ctrl+Ввод .

              Щелкните правой кнопкой мыши изображение tomcat:latest и выберите Создать контейнер .

              В диалоговом окне «Создать конфигурацию Docker» укажите следующее:

              Укажите имя конфигурации: TomcatConfig

              Укажите имя контейнера: TomcatContainer

              Привяжите порт 8080 контейнера к хосту IP 127.0.0.1 и порту 8080

              Сопоставьте выходной каталог артефакта WAR [PROJECT_PATH]/target с каталогом развертывания сервера Tomcat /usr/local/tomcat/webapps .

              В этом руководстве описывается, как создать простое веб-приложение Java EE в IntelliJ IDEA. Приложение будет включать в себя одну страницу JSP, на которой отображается Hello, World! и ссылку на сервлет Java, который также показывает Hello, World! .

              Вы создадите новый проект Java Enterprise, используя шаблон веб-приложения, сообщите IntelliJ IDEA, где находится ваш сервер GlassFish, а затем используйте конфигурацию запуска для создания артефакта, запуска сервера и развертывания на нем артефакта.

              р>

              Вот что вам понадобится:

              Комплект разработчика Java SE (JDK) версии 1.8 или более поздней. Вы можете получить JDK непосредственно из IntelliJ IDEA, как описано в Java Development Kit (JDK), или загрузить и установить его вручную, например, Oracle JDK.

              Сервер приложений GlassFish версии 3.0.1 или более поздней. Вы можете получить последнюю версию на официальном веб-сайте эталонной реализации. Подмножества веб-профилей должно быть достаточно для целей этого руководства.

              GlassFish может некорректно работать с Java SE 9 и более поздними версиями.

              Веб-браузер для просмотра вашего веб-приложения.

              Создать новый проект Java Enterprise

              IntelliJ IDEA включает специальный мастер для создания проектов Java Enterprise на основе различных реализаций Java EE и Jakarta EE. В этом уроке мы создадим простое веб-приложение.

              В главном меню выберите Файл | Новый | Проект .

              В диалоговом окне "Новый проект" выберите Java Enterprise .

              Мастер создания нового проекта Java Enterprise

              Для этого руководства используйте Java 1.8 в качестве SDK проекта и выберите шаблон веб-приложения. Не выбирайте и не добавляйте сервер приложений, мы сделаем это позже. Выберите Maven и JUnit. Нажмите «Далее», чтобы продолжить.

              В списке зависимостей вы можете увидеть, что шаблон веб-приложения включает только структуру сервлетов в разделе Спецификации. Нажмите Далее .

              Введите название вашего проекта: JavaEEHelloWorld . Затем нажмите Готово .

              IntelliJ IDEA создает структуру проекта по умолчанию.

              Изучите структуру проекта по умолчанию

              IntelliJ IDEA создает проект с некоторым шаблонным кодом, который можно успешно собрать и развернуть.

              pom.xml — это объектная модель проекта с информацией о конфигурации Maven, включая зависимости и подключаемые модули, необходимые для сборки проекта.

              index.jsp — это начальная страница вашего приложения, которая открывается при доступе к URL-адресу корневого каталога. Он отображает Hello World!и ссылку на /hello-servlet .

              <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
              Здравствуйте, сервлет

              Используйте окно инструментов "Проект" для просмотра и открытия файлов в проекте или нажмите Ctrl+Shift+N и введите имя файла.

              Настройка GlassFish

              IntelliJ IDEA может создавать и развертывать артефакты вашего приложения, если вы укажете расположение своего сервера. Для этого руководства у вас должен быть установлен сервер GlassFish.

              В диалоговом окне «Параметры/настройки» ( Ctrl+Alt+S ) выберите «Сборка, выполнение, развертывание | Серверы приложений .

              Нажмите и выберите Сервер Glassfish .

              Укажите путь к месту установки сервера GlassFish. IntelliJ IDEA правильно определяет и устанавливает имя и версию.

              Убедитесь, что для сервера GlassFish настроена правильная среда выполнения Java. Вы можете запустить GlassFish в любой поддерживаемой среде выполнения Java или использовать ту, которая настроена для вашего проекта (в этом руководстве используется Java 8). Нажмите Ctrl+Alt+Shift+S, чтобы открыть диалоговое окно «Структура проекта», и скопируйте домашний путь JDK в SDKs. Затем откройте файл asenv.conf в папке glassfish/config в каталоге установки GlassFish и добавьте путь к домашнему JDK в качестве значения для AS_JAVA, например, так:

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

              Создайте конфигурацию запуска GlassFish

              IntelliJ IDEA требуется конфигурация запуска, чтобы создать артефакт и развернуть его на сервере приложений.

              В главном меню выберите «Выполнить | Изменить конфигурации .

              В диалоговом окне "Выполнение/отладка конфигураций" нажмите , разверните узел Glassfish Server и выберите "Локальный" .

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

              Предупреждение о конфигурации запуска GlassFish

              Скорее всего, вам потребуется исправить следующее:

              На вкладке "Сервер" задайте для домена сервера значение domain1.

              На вкладке "Развертывание" добавьте артефакт, который вы хотите развернуть: JavaEEHelloWorld:war взорвался

              Чтобы запустить конфигурацию, нажмите Alt+Shift+F10 и выберите созданную конфигурацию GlassFish.

              Эта конфигурация запуска создает артефакт, затем запускает сервер GlassFish и развертывает артефакт на сервере. Вы должны увидеть соответствующий вывод в окне инструмента «Выполнить».

              Запущен сервер GlassFish и развернутое приложение в инструменте

              После этого он открывает указанный URL в вашем веб-браузере.

              Вывод развернутого приложения в веб-браузере

              Изменить приложение

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

              Откройте index.jsp и измените приветствие с Hello, World! к лучшему приветствию. .

              В окне инструмента "Выполнить" щелкните или нажмите Ctrl+F10 .

              В диалоговом окне «Обновление» выберите «Обновить ресурсы», поскольку страница JSP является статическим ресурсом. Нажмите ОК .

              Обновите URL-адрес приложения в веб-браузере, чтобы увидеть новую строку: Лучшее приветствие.

              Вы можете настроить действие обновления по умолчанию в параметрах конфигурации запуска: в главном меню выберите «Выполнить | Изменить конфигурации. Измените параметр действия «Обновить» на вкладке «Сервер» в настройках конфигурации запуска GlassFish.

              Настроить действия по обновлению приложения в конфигурации запуска GlassFish

              С помощью параметра "Деактивация на кадре" вы можете настроить обновление своих ресурсов и классов без повторного развертывания и перезапуска сервера всякий раз, когда вы переключаете фокус с IntelliJ IDEA. В этом случае вам даже не нужно будет использовать действие «Обновить приложение», просто переключитесь на веб-браузер и обновите страницу.

              Упакуйте приложение в файл WAR и разверните его на работающем сервере

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

              Давайте добавим конфигурацию удаленного запуска GlassFish для развертывания артефакта WAR на работающем сервере. Это предполагает, что вы не завершили работу экземпляра GlassFish на предыдущих шагах.

              В главном меню выберите «Выполнить | Изменить конфигурации .

              В диалоговом окне "Выполнение/отладка конфигураций" нажмите , разверните узел GlassFish Server и выберите "Удаленный" .

              Измените имя этой конфигурации запуска, чтобы ее можно было отличить, например: Remote GlassFish 4.1.1 .

              Откройте вкладку "Развертывание", щелкните под таблицей артефактов для развертывания и выберите Артефакт . Выберите, чтобы развернуть артефакт JavaEEHelloWorld:war, и нажмите OK .

              Нажмите OK, чтобы сохранить конфигурацию удаленного запуска.

              Откройте index.jsp и измените приветствие на Hello from WAR! .

              Выберите новую конфигурацию запуска на главной панели инструментов и нажмите или нажмите Shift+F10 .

              Конфигурация удаленного запуска GlassFish в селекторе

              Упакуйте приложение в EAR

              Подходящие корпоративные приложения упакованы в файлы EAR, которые могут содержать как файлы WAR, так и файлы JAR. Давайте посмотрим, как это сделать в IntelliJ IDEA.

              В окне инструмента "Проект" щелкните правой кнопкой мыши свой модуль и выберите "Добавить поддержку платформы...".

              В диалоговом окне «Добавить поддержку платформы…» выберите «Приложение JavaEE» в разделе «Java EE» и нажмите «ОК».

              IntelliJ IDEA добавляет файл META-INF/application.xml в ваш модуль. Это дескриптор развертывания для вашего приложения.

              Нажмите Ctrl+Alt+Shift+S, чтобы открыть диалоговое окно «Структура проекта». На странице Артефакты выберите новый артефакт JavaEEHelloWorld:ear Expanded и обратите внимание, что он содержит только ресурс аспекта javaEEApplication.

              Разверните элемент Artifacts в разделе Available Elements и дважды щелкните JavaEEHelloWorld:war, чтобы добавить его в структуру артефакта EAR.

              Добавить WAR во взорванный EAR

              Когда вы увидите сообщение о том, что веб-фасет не зарегистрирован в application.xml , нажмите Исправить .

              Нажмите , выберите Приложение Java EE: Архив , затем нажмите Для «JavaEEHelloWorld:ухо взорвалось» .

              Выберите новый артефакт EAR и нажмите «Создать манифест…».

              Создать манифест для артефакта EAR

              Укажите расположение по умолчанию в разделе META-INF рядом с application.xml .

              Откройте файл application.xml . Он должен содержать следующее:

              Развертывание артефакта EAR

              Развертывание артефакта EAR аналогично развертыванию WAR: вам нужна удаленная конфигурация запуска GlassFish.

              В главном меню выберите «Выполнить | Изменить конфигурации .

              В диалоговом окне "Выполнение/отладка конфигураций" нажмите , разверните узел GlassFish Server и выберите "Удаленный" .

              Измените имя этой конфигурации запуска, чтобы ее можно было отличить, например: Remote EAR GlassFish 4.1.1 .

              Откройте вкладку "Развертывание", щелкните под таблицей артефактов для развертывания и выберите Артефакт . Выберите развертывание артефакта JavaEEHelloWorld:ear и нажмите OK .

              Нажмите OK, чтобы сохранить конфигурацию удаленного запуска.

              Откройте index.jsp и измените приветствие на Hello from EAR! .

              Выберите новую конфигурацию запуска на главной панели инструментов и нажмите или нажмите Shift+F10 .

              Что дальше?

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

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