Ответ 1
Эта ошибка возникает из-за того, что maven-war-plugin
в версии 2.6 или ниже ожидает по умолчанию файл src/main/webapp/web.xml
, который будет присутствовать в вашем WAR, и он не нашел его.
Использовать аннотации и обновить до 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>