Использование наложений maven в конфигурации запуска веб-приложения с использованием IntelliJ?

Я разрабатываю веб-сайт на основе магнолии. Я использую архетип веб-приложения для создания нового веб-приложения. Используя командную строку, я могу создать WAR и развернуть его в своем контейнере (Tomcat). Затем я запускаю его, и он работает нормально.

Следующим моим шагом было импортировать структуру моего проекта в IntelliJ. IntelliJ все прекрасно видит и умеет все это компилировать. Я проверил это, сначала выполнив очистку maven, а затем позволив IntelliJ сделать все остальное (перестроить проект).

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

Как только я запускаю tomcat, он не находит мое веб-приложение. Я обнаружил, что оверлей не был объединен с целевым каталогом проекта (что обычно бывает, когда просто выполняется установка maven). Однако IntelJ создал каталог оверлеев в моем проекте и распаковал туда WAR-файл (оверлей/супер).

У меня это работает, когда я сам устанавливаю maven, а затем запускаю Tomcat в IntelliJ. Это очевидно, потому что все виды необходимых файлов теперь находятся в моем целевом каталоге (например, web.xml :)).

Что я хочу, так это: - IntelliJ знает, что когда он запускает Tomcat, он должен подготовить целевой каталог так же, как это сделали бы «mvn install» или «mvn package».

Что он делает: - Он делает что-то среднее. Он создает целевой каталог и копирует ресурсы из проекта веб-приложения. Он не перекрывает какую-либо зависимость от WAR, поэтому целевой каталог веб-приложения неполный.

У кого-нибудь есть советы, чтобы решить эту проблему?


person Stefan Hendriks    schedule 21.09.2011    source источник


Ответы (1)


Я обнаружил, что проверка флажка «запустить цель maven» в конфигурации запуска и установка пакета mvn заставляют его работать.

person Stefan Hendriks    schedule 21.09.2011
comment
Позволит ли это мне также «обновлять классы»? Или мне придется повторно развертывать, чтобы увидеть каждое изменение? - person Abhimanyu; 29.03.2012
comment
Когда вы будете обновлять классы, они будут загружены в память, и все будет работать. Но обратите внимание, что когда вы используете несколько зависимостей, в следующий раз, когда вы запускаете свой контейнер, вам нужно убедиться, что контейнер (например, tomcat) также просматривает ваши последние источники зависимостей. Я нашел это довольно громоздким, мне пришлось mvn clean установить эти зависимости, чтобы убедиться, что они находятся в моем локальном репо. И таким образом цель пакета mvn подберет их правильно. - person Stefan Hendriks; 30.03.2012
comment
@StefanHendriks: Спасибо за совет. У меня была аналогичная проблема, когда определение моего наложения игнорировалось IntelliJ. Кажется, что IntelliJ игнорирует некоторые настройки плагина maven-war-plugin, когда он создает веб-приложение, используя собственный внутренний механизм сборки. Сказать ему делегировать военную сборку самому maven означает, что вся конфигурация военного плагина соблюдается. - person skaffman; 24.12.2013