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?


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


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>

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)


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


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.


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>

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ê.)


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


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


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.


1

Faça isso:

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


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

0

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


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


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.


-1

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


-1

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

1


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.