Как запустить проект Maven в Tomcat от Eclipse
Я запускаю многоуровневый проект maven. Он имеет webapps, упакованные как WAR, которые зависят от компонентов, упакованных как файлы JAR
Большинство изменений кода, которые я принадлежу этим файлам JAR.
Чтобы протестировать изменения, мне нужно переупаковать JAR и WAR и развернуть внешне в tomcat.
Я попытался использовать sysdeo-tomcat-maven-eclipse плагин, но он не работал должным образом.
Пожалуйста, сообщите, есть ли у кого-нибудь решение этой проблемы.
Спасибо
Gaurav
Ответы
Ответ 1
Использование плагина интеграции Maven Eclipse
У меня возникли проблемы, я нашел полезным попробовать инструмент командной строки mvn для отладки. Как правило, если он строит без командной строки ошибок, то вы можете запустить его в Eclipse (но у tomcat также есть проблемы, поэтому вам может потребоваться очистка рабочего каталога и очистка кэшей каждый раз).
Кроме того, я действительно рекомендую использовать плагин интеграции Maven Eclipse! Я использую версию из Sonatypes plugin repo http://m2eclipse.sonatype.org/sites/m2e. В реплике eclipse появилась новая интеграция, но она работает по-другому, и я еще не успел ее исследовать.
Если ваш проект является модульным, это может помочь настроить корневой проект как простой проект (без Java, нет Java EE). Затем импортируйте подпроекты как простые Java-проекты (опять же нет Java EE). Вы все равно можете активировать управление зависимостями и запустить цели сборки через проект.
![Import modules]()
Вам нужно только выбрать подмодули, необходимые для вашего целевого проекта (-ов) по зависимостям.
![Select dependencies to include as sub projects]()
Для любого проекта, который создает военные файлы, активирует фасеты для java ee и настраивает корневой контекст под дополнительной конфигурацией (это можно сделать только один раз, почему на скриншоте отсутствует параметр, так что делайте это правильно).
![Select your decired facets]()
Затем настройте сборку развертывания для ваших фасадных проектов. Все совлокальные проекты (активные в вашей рабочей области) должны быть добавлены в сборку развертывания, и вам также необходимо добавить запись пути построения для зависимостей maven к сборке развертывания. После этого вы можете использовать директиву "Запуск на сервере" для загрузки ваших веб-приложений.
![Setup deployment assembly]()
Я считаю полезным всегда оставаться в чистом режиме java при программировании проектов maven. Любые умные взгляды в Eclipse только затушевывают то, что происходит за сценой, вы получаете доступ к конкретным редакторам, так или иначе активируя завершенные проекты!
Ответ 2
Я использую плагин eclipse webtools и запускаю из него Tomcat. У него есть метод republish, который также публикует банки (если нет, вы просто очищаете каталог и публикуете его).
В файле pom вы должны иметь следующие строки, чтобы веб-инструменты автоматически поддерживались
<build>
...
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<wtpversion>1.5</wtpversion>
...
</configuration>
</plugin>
...
</plugins>
...
</build>
Ответ 3
Использование плагина интеграции Maven Eclipse и веб-бегуна
Настройте завершенный проект (уже описанный в другом ответе), используйте последний плагин интеграции Maven Eclipse Integration. Это должно быть расположено на сайте обновления вашей версии eclipse в сотрудничестве. В моем случае Indigo - http://download.eclipse.org/releases/indigo
(/Collaboration/Maven Integration для Eclipse).
В качестве альтернативы встроенному серверу, который часто терпит неудачу при обновлении зависимостей рабочего пространства в сборке развертывания (для tomcat), я бы рекомендовал использовать Sonatype Web Application Launcher Webby, который похож на директиву приведения maven: запуск плагина maven jetty, Вы можете найти плагин на сайте обновления сонатипов для плагина M2e Webby - http://m2eclipse.sonatype.org/sites/m2e-webby/
. После установки этого плагина вы можете запустить конфигурацию и запустить веб-приложение из автоматической сборки, расположенной в {project}/target/m2e-webby
.
![enter image description here]()
Я рекомендую настроить один из (по умолчанию) встроенных контейнеров-приставок в качестве поставщика для servlet-api. Если необходимо протестировать определенные среды выполнения, внешний контейнер можно легко настроить, перейдя в домашнюю директорию сервера и выбрав подходящего поставщика.
Недостатки, с которыми я столкнулся, довольно незначительны:
- Веб-приложения должны быть вручную отключены, нет "перезагрузки".
- Каждое веб-приложение должно запускаться на отдельном порту, они не делят контейнерный экземпляр.
Ответ 4
Вы получаете "Невозможно прочитать файл TLD" META-INF/c.tld "из файла JAR": g/workspace/.metadata/.plugins с текущей версией плагина m2eclipse с указанной выше конфигурацией.
Вам нужно удалить servlet-api.jar и jsp-api.jar из развернутых проектов lib/folder, чтобы исправить указанную выше ошибку, и настроить конфигурацию настраиваемой сборки, чтобы эти 2 файла не были скопированы в каталог развертывания.