«webxml атрибут обязателен» ошибка в Maven - PullRequest
301 голосов
/ 18 марта 2011

Я получаю следующую ошибку:

Ошибка сборки WAR: требуется атрибут webxml (или существующий ранее WEB-INF / web.xml при выполнении в режиме обновления)

Я получил web.xml в нужном месте, которое projectname\src\main\webapp\WEB-INF\web.xml

Что может быть причиной этого?

Ответы [ 17 ]

346 голосов
/ 18 марта 2011

Было бы полезно, если бы вы могли предоставить фрагмент кода вашего maven-war-plugin.Похоже, web.xml находится в нужном месте, но вы можете явно указать местоположение

<plugin>            
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>        
  </configuration>
</plugin>
131 голосов
/ 15 ноября 2014
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

Это решение работает для меня (раньше я использовал 2.2). Кроме того, я использую конфигурацию на основе Java для Servlet 3.0, и мне не нужно иметь файл web.xml.

80 голосов
/ 24 июня 2012

У меня тоже отлично работает.

<project>

.....

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>WebContent\WEB-INF\web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
25 голосов
/ 20 мая 2017

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

Например:

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

Пожалуйста, смотрите блог для более подробной информации: https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html

21 голосов
/ 20 июля 2015

Если вы переходите с конфигурации на основе XML на конфигурацию на основе Java и вы устранили необходимость в файле web.xml, внедрив WebApplicationInitializer, просто удалите требование наличия файла web.xml.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        ... 
    </configuration>
19 голосов
/ 31 января 2013

Значение моего тега webXml должно выглядеть так, чтобы оно работало:

<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 
15 голосов
/ 25 октября 2014

У меня была точно такая же проблема, и я решил ее так:

Создайте новую папку с именем WEB-INF в src/main/webbapp, затем

Щелкните правой кнопкой мыши на Project -> Инструменты Java EE -> Создать заглушку дескриптора развертывания

Это должно сгенерировать web.xml

Надеюсь, это поможет решить вашу проблему: D

13 голосов
/ 30 октября 2012

Похоже, у вас есть файл web.xml в правильном месте, но даже в этом случае эта ошибка часто вызывается структурой каталогов, не соответствующей тому, что ожидает Maven. Например, если вы начинаете с веб-приложения Eclipse, которое вы пытаетесь создать с помощью Maven.

Если это проблема, быстрое решение - создать
src/main/java и
src/main/webapp (и другие каталоги, если они вам нужны) и просто переместите ваши файлы.

Вот обзор макета директории maven: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

6 голосов
/ 18 ноября 2014

Если вы измените путь проекта по умолчанию, вы должны указать расположение файла web.xml, например:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <webXml>src\main\web\WEB-INF\web.xml</webXml>
            </configuration>
        </plugin>
5 голосов
/ 14 декабря 2015

В соответствии с документацией написано: «Сбой сборки, если отсутствует файл web.xml».Установите в false, если вы хотите, чтобы WAR создавался без файла web.xml.Это может быть полезно, если вы создаете оверлей, у которого нет файла web.xml.Значение по умолчанию: true.Свойство пользователя: failOnMissingWebXml.

<plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <extensions>false</extensions>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>            </plugin>

Надеюсь, оно прояснится

...