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

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

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

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

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

Ответы [ 17 ]

5 голосов
/ 03 декабря 2015

У меня это тоже сработало.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webXml>WebContent\WEB-INF\web.xml</webXml>
            </configuration>
        </plugin>
5 голосов
/ 29 сентября 2014

mvn-war-plugin 2.3 исправляет это:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
        </plugin>
        ...
4 голосов
/ 03 июля 2016

У меня была такая же ошибка на тестовом сервере, но не на локальном.Через несколько минут я обнаружил, что среда IDE не была синхронизирована с pom.xml.Вот как я это решаю:

Повторно сгенерируйте дескриптор развертывания с Eclipse

  1. Щелкните правой кнопкой мыши папку вашего проекта
  2. В контекстном меню выберите «Java»EE Tools "then" Создать заглушку дескриптора развертывания "Generate web.xml
  3. Будет создан файл web.xml.web.xml in project structure

Повторно сгенерируйте дескриптор развертывания с IntelliJ

  1. Щелкните правой кнопкой мыши папку вашего проекта
  2. В контекстевыберите «Открыть настройки модуля», затем нажмите +, чтобы добавить дескриптор веб-развертывания.Generate the deployment descriptor
  3. Затем вы можете изменить путь к вашему дескриптору или Каталоги веб-ресурсов и справа.
  4. Тогда вы получите что-то вроде: Project structure
2 голосов
/ 13 марта 2019

Есть много ответов, и большинство из них будут работать, но я добавлю еще один момент, который, я думаю, имеет не меньшее значение.
Согласно вашему сообщению в журнале вы используете maven.Maven - это инструмент для управления проектами, основанный на некоторых соглашениях.Он строит проект, создает правильную структуру каталогов и помещает файлы в соответствующие каталоги, которые соответствуют Sun Microsystems Directory Structure Standard для приложений Java EE / Web.

Вы можете включать в себя множество вещей, включая плагины maven, изменение / перенастройку корневого каталога проектакаталог и т. д., но есть один простой шаг, который вы можете сделать, и ваш проект должен быть в порядке.Просто поместите ваш web.xml под src\main\webapp\WEB-INF\ и попробуйте построить проект с mvn package.

Я надеюсь, что это добавляет немного больше света к этой проблеме.

2 голосов
/ 11 марта 2013

Убедитесь, что pom.xml правильно размещен в папке Project.а не внутри целевой папки или где-либо еще.

Похоже, pom.xml не относительно выровнен.

2 голосов
/ 26 мая 2016

Была ли изменена структура вашей папки, чтобы файл больше не находился в / src / main / webapp / WEB-INF / web.xml ?

Чтобы решить эту проблему, я дал своей веб-папке имя webapp и поместил ее в src / main. Maven, похоже, ищет web.xml по умолчанию в / src / main / webapp / WEB-INF / web.xml . Если вы сделаете это, вам не нужно явно указывать maven, где находится web.xml. И если вы изменили структуру папок и ваша сборка недавно перестала работать, это может быть причиной.

Примечание: Это старый пост, но опубликованные решения не указывают, почему работающая сборка внезапно перестала работать.

1 голос
/ 11 марта 2017

Эта ошибка возникает из-за того, что вы приказываете Maven упаковывать файлы в war .

<packaging>war</packaging>

Вам действительно нужна война?Если нет, поставьте туда банку. Вот полный код:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <version>1.0-SNAPSHOT</version>

    <groupId>com.your.groupid</groupId>
    <artifactId>artifactid</artifactId>
    <packaging>jar</packaging>
...