it-roy-ru.com

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

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

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

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

Теперь для начала я, когда в структуре проекта -> Артефакты и создал новое веб-приложение: архив. Я назвал его имя_проекта и по умолчанию у него был другой выходной каталог (baseDir/out/artifacts/имя_проекта против baseDir/target), который я оставил все по умолчанию и нажал ОК. 

Теперь я иду в «Выполнить» -> «Редактировать конфигурации» и создаю новый локальный сервер Tomcat, используя следующие настройки  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 поместить его в конфигурацию развертывания. Я чувствовал, что это скорее хак, так как я все еще делаю это через командную строку, и если у меня его еще нет, я не могу установить цель в качестве каталога для поиска файла войны. 

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

22
Joey

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

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

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

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

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

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

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

7) При необходимости установите флажок «Build on make», чтобы всегда использовать последнюю версию кода при каждом запуске сервера.

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

25
xaviert

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

7
vovahost

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

 enter image description here


Решения:

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

File -> Project Structure

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

 enter image description here

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

 enter image description here

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

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

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

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

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

1
isaac.hazan

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

ProjectName/target/
0
Niamat Zawad

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

0
Rammgarot