Использование Intellij для создания войны и развертывания в Tomcat

Мой основной рабочий процесс находится в терминальной mvn clean install в моем базовом каталоге. Это создает целевой каталог с файлом WAR. Я копирую этот файл войны в каталог webapps моего Tomcat.

Если я вношу изменения, я, очевидно, должен повторить процесс, который является утомительным. Я использую Intellij Ultimate 13.1.6, и я знаю, что все это можно сделать через IDE на основе этого руководства.

Поэтому, прежде чем начать, я запускаю mvn clean на моей базе, которая удаляет целевой каталог.

Теперь, чтобы начать, когда в Структуру Проекта → Артефакты и создаем новое Веб-приложение: Архив. Я назвал это project_name, и по умолчанию у него был другой выходной каталог (baseDir/out/artifacts/project_name vs baseDir/target), который я оставил по умолчанию и нажал ok.

Теперь я перехожу к Run → Edit Configurations и создаю новый Local Tomcat Server, используя следующие настройки enter image description here

и на вкладке "Развертывание" я добавляю артефакт, который встроен в мой перед запуском, как показано на моей картинке. Довольно просто.

Однако всякий раз, когда я запускаю сервер через Intellij, он успешно запускается, но ничего не развертывается. Я получаю сообщение об ошибке:

Artifact project_name: com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: /Users/path/to/workspace/project_name/out/artifacts/project_name/project_name.war not found for the web module.

И я дважды проверяю свой каталог и, как видно из этой ошибки, ничего не создается. Даже не каталог.

Что я делаю не так? Я знаю, что обходное решение - вернуться в терминал, запустить mvn clean install и создать этот файл.war, поместить его в конфигурацию развертывания. Я чувствовал, что это был скорее хак, так как я все еще делаю это через командную строку, и если у меня его уже нет, я не могу установить цель как каталог, чтобы найти файл войны.

Любая помощь приветствуется.

Ответы

Ответ 1

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

1) Вручную создайте артефакты, используя Build> Build артефакты.

2) Проверьте, находится ли артефакт в ожидаемом каталоге вывода (out/artifacts/xxx).

3) Если нет, перейдите в Файл> Структура проекта> Артефакты

4) Выберите данный файл артефакта (в этом случае имя проекта).

5) Проверьте правильность выходного каталога. При желании попробуйте создать этот каталог самостоятельно, если IntelliJ этого не сделает (хотя это меня удивит)

6) Проверьте правильность содержимого.

7) Необязательно проверяйте "Build on make", чтобы всегда иметь последнюю версию вашего кода, развернутую при каждом запуске сервера.

Обратите внимание, что для развертывания WAR файлов в Tomcat, вы должны предпочесть использовать взорванную WAR. Это значительно ускоряет развертывание/тестирование/отладку.

Ответ 2

Я получил эту ошибку, когда попытался запустить приложение, используя Run. Проблема заключалась в том, что по какой-либо причине файл WAR не был развернут даже после выбора Build-> Build Artifacts. Решение: я закрыл Idea, а затем повторно разместил проект и выбрал артефакт, взорванный войной. На этот раз развернулось.

Ответ 3

Я получаю эту проблему, причина в структуре проекта, каталог выходных файлов артефактов на самом деле не существует:

enter image description here


Решения:

  1. Перейти к структуре проекта:

File → Project Structure

  1. Затем нажмите кнопку "Каталог"

enter image description here

  1. Вы создаете каталог один за другим в соответствии с каталогом "Вывод":

enter image description here

  1. Затем перезапустите свой проект.

Ответ 4

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

Сервер Tomcat в моем случае был настроен на запуск JMX-порта на 18099 вместо 1099. Поэтому артефакт никогда не был развернут, поскольку порт JMX, используемый в конфигурации IntelliJ Tomcat, по умолчанию - 1099.

Изменение этого параметра на 18099 или удаление этой конкретной конфигурации Tomcat решило проблему.

Суть: если вы хотите, чтобы ваш артефакт был развернут, убедитесь, что порт JMX, настроенный в IntelliJ, соответствует порту JMX, который фактически используется вашим сервером Tomcat.

Ответ 5

Проверьте выходной каталог каталога. Обратите внимание, что использование ~ в пути не будет работать.

Ответ 6

Я пробовал вышеупомянутые решения, но файл WAR не работал, когда я развернул его на сервере tomcat. Вместо вышеупомянутых решений просто введите mvn clean а затем mvn install в окне терминала. Ваш файл WAR теперь находится в

ProjectName/target/