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:
failOnMissingWebXml
(il semble s'agir d'une erreur non critique d'Eclipse)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.
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>
Faire:
mvn clean Eclipse:clean
Ajoutez ceci à votre POM:
<packaging>war</packaging>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Ajoutez la propriété ci-dessous à POM.xml
<failOnMissingWebXml>false</failOnMissingWebXml>
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.
J'ai pu résoudre ce problème en ajoutant cette propriété dans POM.xml comme ci-dessous.
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>