web-dev-qa-db-fra.com

Erreur FailOnMissingWebXml lors de la validation du fichier pom.xml dans Eclipse

Lors de la compilation d'un projet Maven, j'obtiens cette erreur lors de la phase de validation du pom.xml. C'est un projet assez volumineux avec un processus de construction complexe. Le projet contient uniquement du code JavaScript et ne doit pas nécessairement être compilé dans war. Je cherche un moyen de soit:

  • Désactivez simplement l'erreur en désactivant failOnMissingWebXml (il semble s'agir d'une erreur non critique d'Eclipse)
  • Trouvez une solution qui empêche cette erreur de validation dans Eclipse (les réponses aux questions liées Ne fonctionnaient pas pour mon scénario spécifique)

L'erreur complète:

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

Après avoir cliqué sur l'erreur, le problème semble se trouver sur cette ligne de 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>

Vous ne savez pas s'il s'agit d'une erreur Eclipse ou Maven, mais probablement d'Eclipse, car Maven s'exécute sans heurts en ligne de commande. Il peut également s'agir d'un bogue dans Eclipse. J'exécute Eclipse Java EE IDE pour les développeurs Web version: Mars.1 version (4.5.1).

UPDATE1: J'ai essayé de mettre à jour le projet dans Eclipse, mais aucune différence.

UPDATE2: J'ai essayé de changer le type de paquetage de war à pom mais aucune différence.

5
Peter Gerhat

Tout dans Maven tourne autour des plugins. Les plugins sont les programmes qui exécutent certains comportements dans le processus de construction. Certaines inclusions de plugins sont implicites sans que nous ayons à déclarer quoi que ce soit.

Ces implicites ont des configurations par défaut. Par exemple, le maven-compiler-plugin est inclus dans tous les projets, sans avoir à le déclarer. Pour remplacer les configurations par défaut, nous devons déclarer le plug-in dans le fichier pom.xml et définir les configurations. Par exemple, vous verrez que de nombreux projets remplacent la valeur par défaut du maven-compiler-plugin dans lequel les variables source et target sont définies sur Java 1.5. Nous pouvons changer à 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>

Ceci est juste une théorie derrière les plugins pour vous donner une idée de ce qui se passe.

Cela dit, pour utiliser <packaging>war<packaging>, le maven-war-plugin est utilisé sans que nous ayons à déclarer quoi que ce soit. Comme avec <packaging>jar</packaging>, l'inclusion de maven-jar-plugin est implicite. 

La configuration par défaut pour maven-war-plugin est l'échec où il n'y a pas web.xml (cette propriété de configuration étant failOnMissingWebXml). Donc, si nous voulons redéfinir cette valeur par défaut, nous devons déclarer le plug-in, puis définir la valeur de la propriété sur false (not fail)

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

    mvn clean Eclipse:clean
    
  2. Ajoutez ceci à votre POM:

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

Ajoutez la propriété ci-dessous à POM.xml

 <failOnMissingWebXml>false</failOnMissingWebXml>
2
sk vysakh

Je suppose que le chemin le plus simple est de choisir la version 3 du plugin war. La valeur default de failOnMissingWebXml a été modifiée de true à false .

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

Une fois réglé dans votre pom, la vilaine erreur disparaît à jamais.

0
Michael Hübener

J'ai pu résoudre ce problème en ajoutant cette propriété dans POM.xml comme ci-dessous.

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