Я разрабатываю проект Spring MVC с чистой конфигурацией на основе Java. При выполнении чистой установки Maven я получаю сообщение об ошибке ниже.

Не удалось выполнить цель org.apache.maven.plugins: maven-war-plugin: 2.2: war (default-war) в проекте SpringMVC-ShoppingCart: Ошибка сборки WAR: требуется атрибут webxml (или уже существующий WEB-INF / web .xml при выполнении в режиме обновления) -> [Справка 1]

Ошибка говорит о том, что web.xml отсутствует, но у меня его не было, поскольку я использовал конфигурацию на основе чистой Java.

Как убедиться, что проект строит и создает военный файл без web.xml?

18
Omkar Puttagunta 28 Окт 2015 в 14:59

2 ответа

Лучший ответ

Эта ошибка возникает из-за того, что maven-war-plugin в версии 2.6 или ниже , по умолчанию ожидает, что в вашем проекте WAR присутствует файл src/main/webapp/web.xml, и не нашел его.

Используйте аннотации и обновитесь до 3.0.0 или новее

Начиная с версии 3.0.0 плагина наличие web.xml больше не является обязательным по умолчанию:

Значение по умолчанию для failOnMissingWebXml было изменено с true на false.

Это означает, что обновление плагина напрямую решает проблему. Вы можете добавить в свой POM следующую конфигурацию:

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.0.0</version>
</plugin>

Причина в том, что, начиная с Servlet 3.0, файл web.xml больше не нужен в веб-приложении, а можно заменить аннотациями, чтобы иметь конфигурацию на основе Java (MWAR-262). Однако, поскольку ваш проект может не использовать аннотации для замены этого файла, и в этом случае web.xml может фактически отсутствовать, в версии 3.0.1 плагина была добавлена ​​проверка работоспособности, чтобы убедиться, что аннотация @WebServlet находится в пути к классам компиляции вашего Проект WAR (MWAR-396). Если это не так и в вашем проекте нет файла web.xml, плагин по-прежнему не работает по умолчанию.

Игнорируйте отсутствующий web.xml

Если вы просто хотите, чтобы плагин явно игнорировал отсутствующий файл web.xml, независимо от использования аннотаций, вы можете установить failOnMissingWebXml для false. Пример конфигурации:

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </configuration>
</plugin>
43
Community 23 Май 2017 в 12:26

Это потому, что вы не включили web.xml в свой веб-проект и пытаетесь создать войну, используя maven. Чтобы устранить эту ошибку, вам необходимо установить для failOnMissingWebXml значение false в файле pom.xml.

Например:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>   
</properties>

Дополнительные сведения см. В блоге: https: // ankurjain26.blogspot.in/2017/05/error-assembly-war-webxml-attribute.html

3
Ankur jain 20 Май 2017 в 16:36