manca web.xml e <failOnMissingWebXml> è impostato su true


142

Tener conto di:

Inserisci qui la descrizione dell'immagine

Quando creo un semplice progetto Maven in Eclipse , visualizzo questo errore:

web.xml è mancante ed <failOnMissingWebXml>è impostato su true

Come posso risolvere questo problema?


5
Devi aggiungere il maven-war-plugin. Questo è un plugin implicito in cui il valore predefinito per quella proprietà di configurazione è vero. È necessario dichiararlo esplicitamente e impostare la proprietà di configurazione su false. Vedi di più qui . Oppure puoi aggiungere un web.xml vuoto
Paul Samsotha,

Risposte:


181

Puoi farlo anche in questo modo:

  1. Fare clic con il tasto destro su Descrittore di distribuzione in Esplora progetti .
  2. Selezionare Genera stub descrittore di distribuzione .

Si genererà WEB-INF cartella in src / main / webapp e un web.xml in esso.

inserisci qui la descrizione dell'immagine


39
Non consiglierei l'aggiunta di boilerplate al codice, solo perché lo strumento di generazione genera un errore.
Martijn Burger,

1
@MartijnBurger Puoi chiarirci le possibili ripercussioni del suddetto hack e, se possibile, aggiungere anche altre alternative? - aiuterebbe i programmatori principianti come me. Grazie.
Sendhilkumar Alalasundaram,

7
Vedi la mia risposta di seguito per un'alternativa. La soluzione sopra non è sbagliata, è solo che dovresti sempre cercare di rendere il tuo prodotto finale il più pulito possibile. Con la soluzione sopra, il tuo prodotto finale finirà con un web.xml file non necessario . Dovresti invece risolvere questo problema nel tuo strumento di costruzione (ad es. Maven).
Martijn Burger,

Puoi anche fare riferimento a: eggsylife.co.uk/2009/12/20/…
Satyendra

questo aggiungerà file non necessari nel tuo progetto e l'altra cosa è che l'approvazione web.xml è vecchia. se si desidera rimuovere questo errore, quindi forzare l'aggiornamento, l'errore
maven sparirà

393

Questo è un errore maven. Dice che si aspetta un file web.xml nel progetto perché è un'applicazione Web, come indicato da <packaging>war</packaging>. Tuttavia, per le applicazioni web recenti un file web.xml è totalmente facoltativo. Maven deve mettersi al passo con questa convenzione. Aggiungi questo al tuo Maven pom.xmlper consentire a Maven di raggiungerlo e non è necessario aggiungere un inutile web.xmlal tuo progetto:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

Questa è una soluzione migliore rispetto all'aggiunta di un vuoto web.xmlperché in questo modo il tuo prodotto finale rimane pulito, stai solo cambiando i parametri di costruzione.

Per le versioni più attuali di Maven puoi anche usare la versione più breve:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

28
Questa risposta è più logica di altre.
smwikipedia,

7
Se stai usando un ambiente in Servlet 3.0+ e hai l'implementazione di Interface WebApplicationInitializerquesta risposta è l'approccio corretto. È il modo sensato per risolvere questo problema - inutile aggiungere il web.xmldopo aver preso delle misure per vivere senza di esso!
Accidenti,

4
Questa è una risposta migliore rispetto alla creazione di un web.xml vuoto
dtortola,

1
Funziona anche senza Maven> Aggiorna progetto. Quindi non è necessario.
Lucky

13
Ti consigliamo di aggiornare la tua risposta per una configurazione più breve, come suggerito di seguito . Includere è <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>sufficiente invece delle impostazioni di configurazione del plugin più dettagliate.
Olivier

32

Se hai già web.xml in / src / main / webapp / WEB-INF ma ricevi ancora l'errore "web.xml è mancante ed è impostato su true", puoi verificare se hai incluso / src / main / webapp in la fonte del tuo progetto.

Ecco i passaggi che puoi seguire:

  1. Puoi verificarlo facendo clic con il pulsante destro del mouse sul progetto e aprendo la finestra di dialogo Proprietà, quindi "Assembly di distribuzione", dove puoi aggiungere Cartella / src / main / webapp. Salvare l'impostazione, quindi
  2. Vai al menu Eclipse Progetto -> Pulisci ... e pulisci il progetto e l'errore dovrebbe scomparire.

(Ho verificato questo con Eclipse Mars)


Hai riscontrato lo stesso problema in "Eclipse Mars" e la soluzione descritta funziona perfettamente! Grazie
Hartmut P.

non ha funzionato per me ... Ho già quelle cartelle e ho anche provato a impostare false false su web.xml. Non funziona ....
Baradwaj Aryasomayajula

19

Se si utilizza Spring Tool Suite, l'opzione per Genera stub descrittore di distribuzione viene spostata in Java EE Tools, quindi:

  1. Fai clic destro sul tuo progetto
  2. Seleziona Strumenti Java EE
  3. Selezionare l' opzione Genera stub descrittore di distribuzione

Ciò creerà il file web.xml nella cartella src / main / webapp / WEB-INF / e, naturalmente, rimuoverà l'errore dal file pom.xml di Maven.

inserisci qui la descrizione dell'immagine


16

Ho lo stesso problema. Dopo aver studiato e cercato su Google, ho risolto il mio problema:

Fare clic con il tasto destro sulla cartella del progetto, andare a Java EE Tools, selezionare Generate Deployment Descriptor Stub. Questo creerà web.xmlnella cartella src/main/webapp/WEB-INF.


3
Non consiglierei l'aggiunta di boilerplate al codice, solo perché lo strumento di generazione genera un errore.
Martijn Burger,

16

Puoi anche fare questo che è meno dettagliato

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

La soluzione più elegante IMHO. Vedi doc (e un vecchio bug di eclissi che impediva il funzionamento di questa soluzione, ora risolto).
Olivier Cailloux il

9

Eclipse riconosce la webappdirectory predefinita errata . Pertanto dovremmo impostarlo chiaramente entro maven-war-plugin.

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
        <webappDirectory>src/main/webapp</webappDirectory>
      </configuration>
    </plugin>
  </plugins>
</build>

Dopo aver salvato questa impostazione, l'errore non si verificherà mai se viene rimosso. (Non so spiegare perché.)


3

Ho avuto lo stesso problema, anche se avevo la 'src/main/webapp/WEB-INF/'cartella corretta web.xml.

Il problema è scomparso dopo che ho ricreato la configurazione (maven-> eclipse) con l' Maven build..esecuzionemvn eclipse:clean eclipse:eclipse

E poi ho usato Maven -> Update Projectper aggiungere (eclipse-> maven) opzioni specifiche del plugin.


Lo stesso qui, anche se ho usato git reset --hard HEAD
Markus Barthlen il

Grazie, anche questo mi ha aiutato. Tasto destro del mouse -> Maven -> Aggiorna progetto
trebor

2

Ho riscontrato questo problema solo in Eclipse, tutto ha funzionato bene nella riga di comando di Maven ed esisteva il mio file web.xml. Era un progetto maturo (già distribuito in produzione) che è stato influenzato. Il mio problema era legato ai metadati dell'eclissi. Si è verificato un problema con uno dei file nella mia cartella .settings /, in particolare org.eclipse.wst.common.component era stato modificato. Sono stato in grado di ripristinare questo file alla sua versione precedente, che ha risolto il problema nel mio caso.

Nota che la risposta di Yuci non ha funzionato per me, quando ho provato a fare clic su Deployment Assembly nelle proprietà eclipse, ho ricevuto un errore che diceva "la pagina attualmente visualizzata contiene valori non validi".


Ho avuto la stessa situazione e ho dovuto ripristinare il file org.eclipse.wst.common.component dalla mia cartella .settings / e il mio progetto funziona ora, a quanto pare il contenuto del componente è stato eliminato, quindi non ha il percorso per il mio web. file xml. Anche quando ho provato ad aprire Deployment Assembly nelle proprietà eclipse ho avuto lo stesso errore: "la pagina attualmente visualizzata contiene valori non validi". Ho trovato questa risposta un po 'tardi, ma è così che la risolvo. Ottima risposta tra l'altro.
Jorge Valdés,

2

Per Progetto con web.xml presente Progetto -> Proprietà -> Deployment Assembly, dove è possibile aggiungere Cartella src / main / webapp. Salva modifica. Pulisci il progetto per iniziare.

Per Project con web.xml non presente Impostare failOnMissingWebXml su false in pom.xml sotto il tag properties.


1

Fai questo:

Andare e fare clic con il tasto destro su Descrittore distribuzione e fare clic su Genera stub descrittore distribuzione.


0

Non ha senso creare un web.xml, solo lo vuole elcipse, anche se non è necessario. Questo è il caso se si dispone di un conatiner servlet incorporato o se si vive senza xml cfg come fa Spring-Boot. Il solo diable JavaEE (roba inutile) in eclissi a livello di progetto o globale

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK

0

Seleziona il tuo progetto e seleziona l'opzione "Descrittore distribuzione", quindi scegli "Genera stub descrittore distribuzione"


0

Il passaggio di: selezionare il progetto e selezionare l'opzione "Descrittore di distribuzione", quindi scegliere "Genera stub descrittore di distribuzione" funziona correttamente. Il problema è che non sempre abbiamo bisogno di web.xml, quindi è meglio aggiungere false a pom.xml


0

Fare clic destro su project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

quindi premere Avanti per creare una WEB-INFcartella con un web.xmlfile all'interno.

2

È fatto.


-1

Crea la cartella WEB-INF in src / webapp e includi quindi la pagina web.xml nella cartella WEB-INF


-1

Rimuovi i file da -web / .setting e -admin / .setting

1


-1

Fai clic con il pulsante destro del mouse sul progetto, vai su Maven -> Aggiorna progetto ... , quindi controlla Forza aggiornamento di istantanee / rilasci , quindi fai clic su OK . E 'fatto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.