it-roy-ru.com

Ошибка FailOnMissingWebXml при проверке pom.xml в Eclipse

При компиляции проекта Maven я получаю эту ошибку на этапе проверки pom.xml. Это довольно большой проект со сложным процессом сборки. Проект содержит только код JavaScript и не должен быть скомпилирован в war. Я ищу способ либо:

  • Просто отключите ошибку, отключив failOnMissingWebXml (она кажется некритической ошибкой Eclipse)
  • Найдите решение, которое предотвращает эту ошибку проверки в Eclipse (ответы на связанные Вопросы не работали для моего конкретного сценария)

Полная ошибка:

Description Resource    Path    Location    Type web.xml is missing 
and <failOnMissingWebXml> is set to true    pom.xml /testproject    line 6    
Maven Java EE Configuration Problem

После нажатия на ошибку кажется, что проблема в этой строке pom.xml:

  <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>
  <groupId>com.scs</groupId>
  <artifactId>scs-control-panel</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging> **THE ERROR POINTS TO THIS LINE**

  <parent>
    <groupId>com.scs</groupId>
    <artifactId>scs</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../scs</relativePath>
  </parent>

  <build>
  </build>

  <dependencies>
  </dependencies>

</project>

Не уверен, что это ошибка Eclipse или Maven, но, вероятно, Eclipse, поскольку Maven плавно проходит через командную строку. Это также может быть ошибка в Eclipse, я использую Eclipse Java EE IDE для веб-разработчиков. Версия: Mars.1 Release (4.5.1).

ОБНОВЛЕНИЕ 1: Я попытался обновить проект в Eclipse, но без разницы.

ОБНОВЛЕНИЕ 2: Я попытался изменить тип пакета с war на pom, но без разницы.

5
Peter Gerhat

Все в Maven вращается вокруг плагинов. Плагины - это программы, которые выполняют определенное поведение в процессе сборки. Некоторые включения в плагин подразумеваются без необходимости что-либо объявлять.

Это подразумевает конфигурации по умолчанию. Например, maven-compiler-plugin включен во все проекты, без необходимости объявлять его. Чтобы переопределить конфигурации по умолчанию, нам нужно объявить плагин в файле out pom.xml и установить конфигурации. Например, вы увидите, что многие проекты переопределяют настройки по умолчанию для maven-compiler-plugin, для которых source и target установлены на Java 1.5. Мы можем изменить на 1,8

<build>
  <plugins>
      <plugin>
          <groupId>org.Apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.1</version>
          <configuration>
              <source>1.8</source>
              <target>1.8</target>
          </configuration>
      </plugin>
  </plugins>
</build>

Это всего лишь теория, лежащая в основе плагинов, чтобы дать вам представление о том, что происходит.

С учетом вышесказанного, для использования <packaging>war<packaging>, maven-war-plugin используется без необходимости что-либо объявлять. Как и при использовании <packaging>jar</packaging>, подразумевается включение maven-jar-plugin

Конфигурация по умолчанию для maven-war-plugin - это ошибка, при которой нет web.xml (это свойство конфигурации failOnMissingWebXml). Поэтому, если мы хотим переопределить это значение по умолчанию, нам нужно объявить плагин, а затем установить для свойства значение false (не сбой)

<build>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>    
            </configuration>
        </plugin>
    </plugins>
</build>
16
Paul Samsotha
  1. Делать:

    mvn clean Eclipse:clean
    
  2. Добавьте это к вашему POM:

    <packaging>war</packaging>
    <properties>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </properties>
    
7
question_maven_com

Добавьте следующее свойство в POM.xml

 <failOnMissingWebXml>false</failOnMissingWebXml>
2
sk vysakh

Я предполагаю, что самый простой путь - выбрать версию плагина war 3. Значение default для failOnMissingWebXml было изменено с true на false .

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.0.0</version>
</plugin>

Однажды установленный в вашем поме, неприятная ошибка исчезает навсегда.

0
Michael Hübener

Я смог решить эту проблему, добавив это свойство в POM.xml, как показано ниже.

<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
0
Ragu Venkatesan