Что такое target/m2e-wtp/web-ресурсы в Deployment Assembly?

Я создал проект webapp, используя Maven в Eclipse, и обнаружил, что есть источник с именем target/m2e-wtp/web-resources папка в конфигурационной карте "Deployment Assembly". Что означает этот источник? Должен ли я сохранить или удалить его?

Сборка развертывания

1 ответ

Решение

Прежде всего, тот факт, что у вас есть эта запись, означает, что ваше Eclipse работает без сбоев. У вас M2Eclipse и m2e-wtp установлены правильно.

M2Eclipse - это проект, который интегрирует Maven в Eclipse. Он предоставляет возможность создавать свой проект непосредственно в Eclipse (и кучу других вещей). m2e-wtp - это подмножество M2E, которое фокусируется на интеграции с Eclipse Web Tools Project, поэтому оно используется вместе с проектами JavaEE.

Когда я говорю "интеграция", это действительно означает, что за кулисами происходит много магии, чтобы все работало гладко. Одним из таких волшебных ингредиентов для m2e-wtp является то, что target/m2e-wtp-web-resources папка, которая используется при развертывании веб-приложения внутри самого Eclipse. Цитирование из документации:

target/m2e-wtp/web-resources/ папка, содержащая автоматически сгенерированные ресурсы, которые необходимо развернуть на сервере приложений. Эти сгенерированные ресурсы:

  • pom.properties а также MANIFEST.MF генерируется плагином mavenarchiver
  • ресурсы, определенные в <webResources> раздел maven-war-pluginили фильтруется web.xml

target/m2e-wtp/web-resources/ является производным В Eclipse lingo это означает, что будет отображаться предупреждение, если вы попытаетесь вручную отредактировать содержащиеся в нем файлы, поскольку они, скорее всего, будут автоматически переопределены в следующей (инкрементной или нет) сборке проекта.

Если вы посмотрите в свой <project>/.settings/org.eclipse.wst.common.component файл, вы увидите /target/m2e-wtp/web-resources определяется ДО обычного каталога war war:

<project-modules id="moduleCoreId" project-version="1.5.0">
  <wb-module deploy-name="webapp">
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
    <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
    <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <property name="context-root" value="webapp"/>
    <property name="java-output-path" value="/webapp/target/classes"/>
  </wb-module>
</project-modules>

Обоснование этого порядка заключается в том, что если два файла из двух разных исходных папок сталкиваются, WTP развернет первый найденный файл. Так что, если вы фильтруете web.xml сидя под src/main/webapp/WEB-INF, вы хотите, чтобы отфильтрованная версия была развернута на сервере, то есть target/m2e-wtp/web-resources/WEB-INF/web.xml, Если по какой-либо причине вы хотели бы отключить использование target/m2e-wtp/web-resources/Ну, знай, что можешь.

Так что, не бойтесь, наличие этой папки на самом деле свидетельствует о том, что с вашей настройкой все в порядке. Если вы удалите эту запись по ошибке, она будет воссоздана при следующем обновлении вашего проекта Maven в Eclipse.

Другие вопросы по тегам