webentwicklung-frage-antwort-db.com.de

FailOnMissingWebXml-Fehler bei der Überprüfung von pom.xml in Eclipse

Beim Kompilieren eines Maven-Projekts bekomme ich diesen Fehler während der Validierungsphase von pom.xml. Es ist ein ziemlich großes Projekt mit komplexem Build-Prozess. Das Projekt enthält nur JavaScript-Code und muss nicht in war kompiliert werden. Ich suche nach einem Weg, entweder:

  • Deaktivieren Sie einfach den Fehler, indem Sie failOnMissingWebXml deaktivieren (es scheint ein nicht kritischer Eclipse-Fehler zu sein).
  • Finden Sie eine Lösung, die diesen Überprüfungsfehler in Eclipse verhindert (Antworten auf verwandte Fragen haben in meinem speziellen Szenario nicht funktioniert)

Der volle Fehler:

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

Nach dem Klicken auf den Fehler scheint das Problem in dieser Zeile von pom.xml zu sein:

  <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>

Nicht sicher, ob dies ein Eclipse- oder Maven-Fehler ist, aber wahrscheinlich Eclipse, da Maven die Befehlszeile problemlos ausführt. Es kann auch ein Fehler in Eclipse sein. Ich verwende Eclipse Java EE IDE für Web Developers Version: Mars.1 Release (4.5.1).

UPDATE1: Ich habe versucht, das Projekt in Eclipse zu aktualisieren, jedoch keinen Unterschied.

UPDATE2: Ich habe versucht, den Pakettyp von war in pom zu ändern, aber keinen Unterschied.

5
Peter Gerhat

In Maven dreht sich alles um Plugins. Plugins sind die Programme, die ein bestimmtes Verhalten im Erstellungsprozess ausführen. Einige Plugin-Einschlüsse sind impliziert, ohne dass wir etwas erklären müssen.

Diese implizierten haben Standardkonfigurationen. Zum Beispiel ist der maven-compiler-plugin in allen Projekten enthalten, ohne dass er deklariert werden muss. Um die Standardkonfigurationen zu überschreiben, müssen Sie das Plug-In in der Datei pom.xml deklarieren und die Konfigurationen festlegen. Beispielsweise werden viele Projekte den Standardwert für maven-compiler-plugin überschreiben, für den source und target auf Java 1.5 eingestellt sind. Wir können zu 1.8 wechseln

<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>

Dies ist nur eine Theorie hinter den Plugins, um Ihnen eine Vorstellung davon zu geben, was los ist.

Wenn <packaging>war<packaging> verwendet wird, wird der maven-war-plugin verwendet, ohne dass wir etwas erklären müssen. Genau wie bei der Verwendung von <packaging>jar</packaging> ist die Einbeziehung von maven-jar-plugin impliziert. 

Die Standardkonfiguration für maven-war-plugin ist der Fehler, wenn kein web.xml vorhanden ist (diese Konfigurationseigenschaft ist failOnMissingWebXml). Wenn Sie diesen Standardwert überschreiben möchten, müssen Sie das Plugin deklarieren und den Wert für die Eigenschaft auf false setzen (nicht fehlschlagen).

<build>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>    
            </configuration>
        </plugin>
    </plugins>
</build>
16
Paul Samsotha
  1. Tun:

    mvn clean Eclipse:clean
    
  2. Fügen Sie dies Ihrem POM hinzu:

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

Füge die untenstehende Eigenschaft zu POM.xml hinzu

 <failOnMissingWebXml>false</failOnMissingWebXml>
2
sk vysakh

Ich denke, der einfachste Weg ist die Wahl der War Plugin-Version 3. Der default value für failOnMissingWebXml wurde von true in false geändert.

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

Einmal in Ihrem Pom eingesetzt, verschwindet der böse Fehler für immer.

0

Ich konnte dieses Problem durch Hinzufügen dieser Eigenschaft in POM.xml wie folgt beheben.

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