Maven ошибка сборки WAR: атрибут webxml требуется при создании проекта SpringMVC с чистой конфигурацией на основе Java и без xml

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

не удалось выполнить цель орг.апаш.знаток.Плагины:maven-war-plugin:2.2: war (по умолчанию-война) on проект SpringMVC-ShoppingCart: ошибка сборки WAR: атрибут webxml требуется (или уже существующий WEB-INF / web.xml при выполнении в обновлении mode)- > [Help 1]

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

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

2 ответов


эта ошибка происходит потому, что maven-war-plugin в версии 2.6 или ниже, ожидает по умолчанию 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>

причина в том, что начиная с сервлета 3.0, больше не нужен в веб-приложении, и можно заменить аннотации иметь конфигурацию на основе Java (MWAR-262). Однако, поскольку ваш проект может не использовать аннотации для замены этого файла, в этом случае web.xml на самом деле может отсутствовать, проверка здравомыслия была добавлена в версии 3.0.1 плагина, чтобы убедиться, что аннотация @WebServlet в компиляции класса вашего проекта войны (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>

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

например:

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

пожалуйста см. блог Для больше деталей: https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html