2015-11-04 22 views
5

Quando si compila un progetto di Maven ottengo questo errore durante la fase di validazione del pom.xml. È un progetto abbastanza ampio con un processo di compilazione complesso. Il progetto contiene solo codice JavaScript e non deve essere compilato in war. Sto cercando un modo per entrambi:errore durante la convalida FailOnMissingWebXml pom.xml in Eclipse

  • basta disabilitare l'errore tramite la disabilitazione failOnMissingWebXml (che sembra essere un errore di Eclipse non critico)
  • trovare una soluzione che impedisce questo errore di convalida in Eclipse (risposte al correlati domande non ha funzionato per il mio scenario specifico)

L'errore completo:

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 

Dopo c leccare sull'errore il problema sembra essere su questa linea di 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> 

Non sono sicuro se questo è un errore Eclipse o Maven, ma probabilmente Eclipse, dal momento che Maven senza intoppi attraverso la linea di comando. Potrebbe anche essere un bug in Eclipse, sto eseguendo EcEse Java EE IDE per Web Developers Versione: Mars.1 Release (4.5.1).

Update1: ho provato ad aggiornare il progetto in Eclipse, ma nessuna differenza.

UPDATE2: Ho provato a cambiare il tipo di pacchetto da war a pom ma nessuna differenza.

+1

Credo che questo sia un duplicato: per favore guarda questi due link: [Maven - Risolto - web.xml non trovato nel progetto Java EE7] (http://stackoverflow.com/questions/31413990/solved-web-xml -not-found-in-java-ee7-project), e [Eclipse - web.xml è mancante] (http://stackoverflow.com/questions/31835033/web-xml-is-missing-and-failonmissingwebxml-is -set-to-true) – paulsm4

+0

Puoi per favore fornire l'intero 'pom.xml'? –

+0

Entrambe le risposte suggerite non hanno risolto il mio problema. Eliminazione di .metada .project .settings .classpath. ha causato più errori in aggiunta a questo. Il 'pom.xml' completo è ora allegato. Ho provato ad aggiornare il progetto in Eclipse ma nessuna differenza. –

risposta

13

Tutto in Maven ruota intorno plugin. I plugin sono i programmi che eseguono alcuni comportamenti all'interno del processo di compilazione. Alcune inclusioni di plugin sono implicite senza che noi dobbiamo dichiarare nulla.

Questi implicita hanno configurazioni di default. Ad esempio, lo maven-compiler-plugin è incluso in tutti i progetti, senza doverlo dichiarare. Per sovrascrivere le configurazioni predefinite, dobbiamo dichiarare il plugin nel file pom.xml e impostare le configurazioni. Per esempio si vedrà un sacco di progetti ignorare l'impostazione predefinita sul maven-compiler-plugin, che ha la sua source e target insieme a Java 1.5. Possiamo cambiare a 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> 

Questo è solo un po 'di teoria dietro i plugin per dare un'idea di quello che sta succedendo.

Con ciò detto, per utilizzare <packaging>war<packaging>, il maven-war-plugin viene utilizzato senza che noi dobbiamo dichiarare nulla. Proprio come quando si utilizza <packaging>jar</packaging>, l'inclusione dello maven-jar-plugin è implicita.

La configurazione predefinita per maven-war-plugin è l'errore in assenza di web.xml (la proprietà di configurazione è failOnMissingWebXml).Quindi, se vogliamo ignorare questa impostazione predefinita, abbiamo bisogno di dichiarare il plugin, quindi impostare il valore della proprietà su false (non fallire)

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml>  
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

Questo sembra risolvere il problema - Devo controllare di nuovo la tua risposta. Questo potrebbe anche essere un problema con la versione più recente di Eclipse (Mars) poiché il controllo non sembra comportare un errore nella versione precedente (Luna) –

7
  1. Do:

    mvn clean eclipse:clean 
    
  2. Aggiungi questo al vostro POM:

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

aggiungere la proprietà sottostante per pom.xml

<failOnMissingWebXml>false</failOnMissingWebXml> 
0

immagino il percorso più facile è quello di scegliere la versione del plugin War 3. il predefinito rapporto qualità-failOnMissingWebXml è stato cambiato da vero a falso.

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

Una volta impostato nel tuo pom, il brutto errore svanisce per sempre.

Problemi correlati