web.xml está ausente e <failOnMissingWebXml> está definido como true

142

Considerar:

Digite a descrição da imagem aqui

Quando crio um projeto simples do Maven no Eclipse , estou recebendo este erro:

web.xml está ausente e <failOnMissingWebXml>está definido como true

Como posso resolver este problema?

Yogesh Doke
fonte
5
Você precisa adicionar o maven-war-plugin. Este é um plug-in implícito, em que o valor padrão para essa propriedade de configuração é verdadeiro. Você precisa declará-lo explicitamente e definir a propriedade de configuração como false. Veja mais aqui . Ou você pode adicionar um web.xml vazio
Paul Samsotha

Respostas:

181

Você também pode fazer isso:

  1. Clique com o botão direito do mouse em Deployment Descriptor no Project Explorer .
  2. Selecione Gerar Stub do Descritor de Implementação .

Ele irá gerar a pasta WEB-INF em src / main / webapp e um web.xml nela.

insira a descrição da imagem aqui

Wojciechu
fonte
39
Eu não recomendaria adicionar boilerplate ao código, apenas porque sua ferramenta de compilação apresenta um erro.
Martijn Burger
1
@MartijnBurger Você pode nos esclarecer sobre as possíveis repercussões do hack acima e, se possível, adicionar outras alternativas? - ajudaria programadores iniciantes como eu. Obrigado.
Sendhilkumar Alalasundaram
7
Veja minha resposta abaixo para uma alternativa. A solução acima não está errada, mas você deve sempre se esforçar para tornar o seu produto final o mais limpo possível. Com a solução acima, seu produto final terá um web.xml arquivo desnecessário . Você deve corrigir esse problema ao criar a ferramenta (ou seja, maven).
Martijn Burger
Você também pode consultar: eggsylife.co.uk/2009/12/20/…
Satyendra
isso adicionará um arquivo desnecessário ao seu projeto e outra coisa é que o web.xml approcah é antigo. se você deseja remover esse erro, em seguida, apenas forçar atualizar o erro maven será ido
varshney jitendra
393

Este é um erro grave. Ele diz que está esperando um arquivo web.xml no seu projeto porque é um aplicativo da web, conforme indicado por <packaging>war</packaging>. No entanto, para aplicativos Web recentes, um arquivo web.xml é totalmente opcional. Maven precisa alcançar essa convenção. Adicione isso ao seu maven pom.xmlpara permitir que ele se atualize e você não precisará adicionar um inútil web.xmlao seu projeto:

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

Esta é uma solução melhor do que adicionar um vazio, web.xmlpois assim o seu produto final permanece limpo, você está apenas alterando os parâmetros de construção.

Para versões mais atuais do maven, você também pode usar a versão mais curta:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Martijn Burger
fonte
28
Essa resposta é mais lógica do que outras.
smwikipedia
7
Se você estiver usando um ambiente no Servlet 3.0+ e tiver alguma implementação de, Interface WebApplicationInitializeresta resposta é a abordagem correta. É a maneira sensata de resolver esse problema - não adianta adicionar as web.xmletapas necessárias para viver sem ele!
Geeb
4
Esta é uma resposta melhor do que criar um web.xml vazio
dtortola
1
Funciona mesmo sem o Maven> Atualizar projeto. Portanto, não é necessário.
Lucky
13
Considere atualizar sua resposta para uma configuração mais curta, conforme sugerido abaixo . A inclusão <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>é suficiente, em vez das definições de configuração mais detalhadas do plug-in.
precisa saber é o seguinte
32

Se você já tem web.xml sob / src / main / webapp / WEB-INF, mas você ainda receber erro "web.xml está em falta e é definido como verdadeiro", você pode verificar se você tiver incluído / src / main / webapp em a fonte do seu projeto.

Aqui estão as etapas que você pode seguir:

  1. Você pode verificar isso clicando com o botão direito do mouse no seu projeto e abrir a caixa de diálogo Propriedades e, em seguida, "Conjunto de Implantação", onde você pode adicionar Pasta / src / main / webapp. Salve a configuração e, em seguida,
  2. Vá para o menu Eclipse Projeto -> Limpar ... e limpe o projeto, e o erro deve desaparecer.

(Eu verifiquei isso com o Eclipse Mars)

Yuci
fonte
O mesmo problema ocorreu em "Eclipse Mars" e sua solução descrita funciona perfeitamente! Graças
Hartmut P.
não funcionou para mim ... Eu já estou tendo essas pastas e até tentei definir web.xml como false. Ele não está funcionando ....
Baradwaj Aryasomayajula
19

Se você usar o Spring Tool Suite, a opção para Gerar Stub do Descritor de Implementação será movida em Java EE Tools, para que você:

  1. Clique com o botão direito do mouse no seu projeto
  2. Selecione Ferramentas Java EE
  3. Selecione a opção Gerar Stub do Descritor de Implementação

Isso criará o arquivo web.xml dentro da pasta src / main / webapp / WEB-INF / e, é claro, removerá o erro do arquivo pom.xml do Maven.

insira a descrição da imagem aqui

milan.latinovic
fonte
16

Eu tenho o mesmo problema. Depois de estudar e pesquisar no Google, resolvi meu problema:

Clique com o botão direito do mouse na pasta do projeto, vá para Java EE Tools, selecione Generate Deployment Descriptor Stub. Isto irá criar web.xmlna pasta src/main/webapp/WEB-INF.

Tung
fonte
3
Eu não recomendaria adicionar boilerplate ao código, apenas porque sua ferramenta de compilação apresenta um erro.
Martijn Burger
16

Você também pode fazer isso menos detalhado

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
liam mooney
fonte
A solução mais elegante IMHO. Consulte o documento (e um bug antigo do eclipse que impedia que esta solução funcionasse, agora resolvida).
Olivier Cailloux
9

O Eclipse reconhece o webappdiretório padrão incorreto . Portanto, devemos defini-lo claramente 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>

Depois de salvar essa configuração, o erro nunca ocorrerá se for removido. (Não sei explicar o porquê.)

出 羽 和
fonte
3

Eu tive o mesmo problema, mesmo tendo a 'src/main/webapp/WEB-INF/'pasta correta web.xml.

O problema desapareceu depois que eu recriei (maven-> eclipse) a configuração com Maven build..eu executei mvn eclipse:clean eclipse:eclipse

E então eu Maven -> Update Projectadicionava opções específicas do plugin (eclipse-> maven).

Boris Treukhov
fonte
O mesmo aqui, embora eu usei git redefinir CABEÇA --hard
Markus Barthlen
Obrigado, isso me ajudou também. Clique com o botão direito do mouse -> Maven -> Atualizar projeto
trebor
2

Encontrei esse problema apenas no eclipse, tudo funcionou bem na linha de comando do Maven e meu arquivo web.xml existia. Foi um projeto maduro (já implantado na produção) que foi impactado. Meu problema estava ligado aos metadados do eclipse. Houve um problema com um dos arquivos em minha pasta .settings /, especificamente o org.eclipse.wst.common.component havia sido alterado. Consegui restaurar este arquivo para sua versão anterior, o que resolveu o problema no meu caso.

Observe que a resposta de Yuci não funcionou para mim. Quando tentei clicar em Deployment Assembly nas propriedades do eclipse, recebi um erro que dizia "a página atualmente exibida contém valores inválidos".

Adaga de Gilbert Arenas
fonte
Eu tive a mesma situação e tive que restaurar o arquivo org.eclipse.wst.common.component da minha pasta .settings / e meu projeto funciona agora, aparentemente o conteúdo do componente foi excluído, por isso não tem o caminho para a minha web. arquivo xml. Além disso, quando tentei abrir o Deployment Assembly nas propriedades do eclipse, recebi o mesmo erro: "a página atualmente exibida contém valores inválidos". Achei esta resposta um pouco tarde, mas é assim que eu a resolvo. Ótima resposta btw.
Jorge Valdés
2

Para o Project com web.xml, apresente Project -> Properties -> Deployment Assembly, onde você pode adicionar a pasta src / main / webapp. Salve as alterações. Limpe o projeto para começar.

Para Projeto com web.xml não presente Defina failOnMissingWebXml como false em pom.xml na marca de propriedades.

Saurav
fonte
1

Faça isso:

Vá e clique com o botão direito do mouse em Deployment Descriptor e clique em Generate Deployment Descriptor Stub.

Nuno Marques
fonte
0

Não faz sentido criar um web.xml, apenas a elcipse deseja, mesmo que não seja necessário. Este é o caso se você tiver o servlet conatiner incorporado ou vivendo sem o xml cfg, como o spring-boot faz. O que você acabou de digitar JavaEE (coisas inúteis) em eclipse no nível do projeto ou global

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
força
fonte
0

Selecione seu projeto e selecione a opção "Deployment Descriptor" e, em seguida, escolha "Generate Deployment Descriptor stub"

Christina Vimala
fonte
0

A etapa de: Selecione seu projeto e selecione a opção "Deployment Descriptor" e, em seguida, escolha "Generate Deployment Descriptor stub" funciona bem. A questão é que nem sempre é necessário o web.xml; portanto, é melhor anexar false ao pom.xml

Lotchi Dagbo
fonte
0

Clique com o botão direito do mouse no project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

depois pressione Next para criar uma WEB-INFpasta com um web.xmlarquivo dentro.

2

É isso feito.

Vraj Patel
fonte
-1

Crie a pasta WEB-INF no src / webapp e inclua a página web.xml dentro da pasta WEB-INF.

basavaraj Marapur
fonte
-1

Remova os arquivos -web / .setting e -admin / .setting

1

jun gao
fonte
-1

Clique com o botão direito do mouse no projeto, vá para Maven -> Atualizar Projeto ... , verifique a Forçar Atualização de Instantâneos / Liberações e clique em OK . Está feito!

João V.
fonte