web.xml eksik ve <failOnMissingWebXml> true olarak ayarlandı


142

Düşünmek:

Resim açıklamasını buraya girin

Eclipse basit bir Maven projesi oluşturduğumda bu hatayı alıyorum:

web.xml eksik ve <failOnMissingWebXml>true olarak ayarlandı

Bu sorunu nasıl düzeltebilirim?


5
Eklemeniz gerekir maven-war-plugin. Bu, söz konusu yapılandırma özelliği için varsayılan değerin doğru olduğu örtük bir eklentidir. Bunu açıkça bildirmeniz ve configuration özelliğini false olarak ayarlamanız gerekir. Daha fazlasını burada görün . Veya boş bir web.xml ekleyebilirsiniz
Paul Samsotha

Yanıtlar:


181

Bunu şu şekilde de yapabilirsiniz:

  1. Sağ tıkla Dağıtım Tanımlayıcıda içinde Proje Gezgini .
  2. Dağıtım Tanımlayıcı Saplaması Oluştur'u seçin .

Bu üretecektir WEB-INF klasörü src / main / webapp ve web.xml içinde.

resim açıklamasını buraya girin


39
Ben sadece derleme aracı hata verir, çünkü kod boilerplate eklemenizi tavsiye etmem.
Martijn Burger

1
@MartijnBurger Yukarıdaki hack'in olası yansımaları hakkında bizi aydınlatabilir ve mümkünse başka alternatifler de ekleyebilir misiniz? - benim gibi acemi programcılara yardım ederdi. Teşekkürler.
Sendhilkumar Alalasundaram

7
Bir alternatif için aşağıdaki cevabıma bakın. Yukarıdaki çözüm yanlış değil, sadece nihai ürününüzü olabildiğince temiz hale getirmek için çaba göstermeniz gerekiyor. Yukarıdaki çözümle, nihai ürününüz gereksiz bir web.xml dosya ile sonuçlanacaktır . Bunun yerine derleme aracınızda (yani maven) bu sorunu düzeltmelisiniz.
Martijn Burger

Ayrıca başvurabilirsiniz: eggsylife.co.uk/2009/12/20/…
Satyendra

bu projenize gereksiz dosya ekleyecektir ve başka bir şey web.xml approcah eski olmasıdır. Bu hatayı kaldırmak istiyorsanız, maven hatasını güncellemeye
zorlayın

393

Bu bir maven hatasıdır. Belirtildiği gibi bir web uygulaması olduğu için projenizde bir web.xml dosyası beklediğini söylüyor <packaging>war</packaging>. Ancak, son web uygulamaları için bir web.xml dosyası tamamen isteğe bağlıdır. Maven'in bu sözleşmeye uyması gerekiyor. Senin maven Bu ekle pom.xmlmaven izin yakalamak ve bir işe yaramaz eklemek gerekmez için web.xmlprojenize:

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

Bu, boş bir web.xmlürün eklemekten daha iyi bir çözümdür, çünkü bu şekilde nihai ürününüz temiz kalır, sadece yapı parametrelerinizi değiştirirsiniz.

Maven'in daha güncel sürümleri için daha kısa sürümü de kullanabilirsiniz:

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

28
Bu cevap diğerlerinden daha mantıklı.
smwikipedia

7
Servlet 3.0+ ortamında kullanıyorsanız ve bunun herhangi bir uygulamasına sahipseniz Interface WebApplicationInitializer, bu doğru yaklaşımdır. Bu sorunu çözmenin mantıklı yolu - web.xmlonsuz yaşamak için adımlar attıktan sonra eklemenin anlamı yok !
Geeb

4
Bu, boş bir web.xml oluşturmaktan daha iyi bir yanıttır
dtortola

1
Maven olmadan da çalışır> Projeyi Güncelle. Yani gerekli değil.
Şanslı

13
Lütfen aşağıda önerildiği gibi daha kısa bir yapılandırma için yanıtınızı güncellemeyi düşünün . <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>Daha ayrıntılı eklenti yapılandırma ayarları yerine yeterlilikler dahil .
Olivier Cailloux

32

Zaten / src / main / webapp / WEB-INF altında web.xml'niz varsa ancak "web.xml eksik ve true olarak ayarlanmış" hatası alıyorsanız, / src / main / webapp dosyasını ekleyip eklemediğinizi kontrol edebilirsiniz . proje kaynağınız.

İzleyebileceğiniz adımlar şunlardır:

  1. Projenizi sağ tıklatıp Özellikler iletişim kutusunu ve ardından Klasör / src / main / webapp'yi ekleyebileceğiniz "Dağıtım Montajı" nı açarak bunu kontrol edebilirsiniz. Ayarı kaydedin ve ardından,
  2. Eclipse menüsüne Project -> Clean ... 'a gidin ve projeyi temizleyin, hata giderilmelidir.

(Eclipse Mars ile bunu doğruladım)


"Eclipse Mars" altında aynı sorunu eperienced ve tarif edilen çözüm mükemmel çalışıyor! Teşekkürler
Hartmut P.

benim için çalışmadı ... Ben zaten bu klasörlere sahip ve hatta web.xml yanlış eksik ayarlamaya çalıştım.
Çalışmıyor

19

Spring Tool Suite kullanıyorsanız, Dağıtım Tanımlayıcı Saplaması Oluştur seçeneği Java EE Araçları altında taşınır, böylece:

  1. Sağ tıklama senin üzerinde proje
  2. Java EE Araçlarını Seçin
  3. Seçin Dağıtım Tanımlayıcı Stub seçeneği üret

Bu, src / main / webapp / WEB-INF / klasörü içinde web.xml dosyası oluşturur ve elbette Maven'in pom.xml dosyasından hatayı kaldırır.

resim açıklamasını buraya girin


16

Aynı problemim var. Okuduktan ve çalıştıktan sonra sorunumu çözdüm:

Proje klasörünü sağ tıklayın, gidin Java EE Tools, seçin Generate Deployment Descriptor Stub. Bu web.xmlklasörde oluşturulur src/main/webapp/WEB-INF.


3
Ben sadece derleme aracı hata verir, çünkü kod boilerplate eklemenizi tavsiye etmem.
Martijn Burger

16

Daha az ayrıntılı olan bunu da yapabilirsiniz

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

En şık çözüm IMHO. Bkz. Doc (ve bu çözümün çalışmasını engelleyen eski bir tutulma hatası , şimdi çözüldü).
Olivier Cailloux

9

Eclipse yanlış varsayılan webappdizini tanır . Bu nedenle açıkça belirtmeliyiz 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>

Bu ayarı kaydettikten sonra, kaldırılırsa hata asla ortaya çıkmaz. (Nedenini açıklayamıyorum.)


3

Doğru sorunu olan bir 'src/main/webapp/WEB-INF/'klasör olmasına rağmen aynı sorunu yaşadım web.xml.

I (maven-> Tutulma) yapılandırmayı yeniden sonra sorun kayboldu Maven build..İdammvn eclipse:clean eclipse:eclipse

Ve sonra Maven -> Update Project(eclipse-> maven) eklentisine özel seçenekler eklerdim.


Burada aynı, git reset kullanmamıza rağmen
Markus Barthlen

Teşekkür ederim, bu da bana yardımcı oldu. Sağ tıklayın -> Maven -> Güncelleme Projesi
trebor

2

Sadece tutulmada bu sorunla karşılaştım, Maven komut satırında her şey iyi çalıştı ve web.xml dosyam vardı. Etkilenen olgun bir projeydi (zaten üretimde konuşlandırıldı). Benim sorunum tutulma meta verilerine bağlıydı. .Settings / klasörümdeki dosyalardan biriyle ilgili bir sorun vardı, özellikle org.eclipse.wst.common.component değiştirildi. Bu dosyayı benim durumumda sorunu çözen önceki sürümüne geri yükleyebildim.

Yuci'nin yanıtı benim için işe yaramadı, tutulma özelliklerinde Dağıtım Meclisi'ne tıklamaya çalıştığımda, "şu anda görüntülenen sayfa geçersiz değerler içeriyor" diyen bir hata aldım.


Aynı durum vardı ve org.eclipse.wst.common.component dosyasını .settings / klasörümden geri yüklemek zorunda kaldım ve projem şimdi çalışıyor, görünüşe göre bileşenin içeriği silindi, bu yüzden web'imin yolu yok. xml dosyası. Ayrıca eclipse özelliklerinde Dağıtım Montajı'nı açmaya çalıştığımda aynı hatayı aldım: "şu anda görüntülenen sayfa geçersiz değerler içeriyor." Bu cevabı biraz geç buldum ama bu şekilde çözdüm. Harika cevap btw.
Jorge Valdés

2

Web.xml içeren Project için, Klasör src / main / webapp ekleyebileceğiniz Project -> Özellikler -> Dağıtım Montajı'nı sunun. Değişikliği kaydet. Başlamak için projeyi temizleyin.

Web.xml içeren proje için mevcut değil tag.xml dosyasında failOnMissingWebXml öğesini false olarak ayarlayın.


1

Bunu yap:

Dağıtım Tanımlayıcı'ya sağ tıklayın ve Dağıtım Tanımlayıcı Saplaması Oluştur'a tıklayın.


0

Bir web.xml oluşturmak mantıklı değil, sadece elips onu istiyor, hatta gerek yok. Bu, yaylı önyükleme gibi gömülü veya xml cfg olmadan yaşayan sunucu uygulamanız varsa. JavaEE'yi (işe yaramaz şeyler) proje düzeyinde veya global olarak tutulmaya yönlendirirsiniz

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

0

Projenizi seçin ve "Dağıtım Tanımlayıcısı" seçeneğini belirleyin ve ardından "Dağıtım Tanımlayıcı Saplaması Oluştur" u seçin


0

Adım: Projenizi seçin ve "Dağıtım Tanımlayıcısı" seçeneğini belirleyin ve ardından "Dağıtım Tanımlayıcı Saplaması Oluştur" seçeneğini seçin. Sorun şu ki, web.xml'e ihtiyacımız her zaman böyle değil, bu yüzden pom.xml'e yanlış eklemek en iyisidir


0

Üzerine sağ tıklayın project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

sonra İleri'ye basın , içinde WEB-INFbir web.xmldosya olan klasör oluşturur .

2

Bu kadar.


-1

Src / webapp içinde WEB-INF klasörü oluşturun ve WEB-INF klasörünün içine web.xml sayfasını ekleyin


-1

Dosyaları -web / .setting & -admin / .setting'den kaldır

1


-1

Projeye sağ tıklayın, Maven -> Projeyi Güncelle ... seçeneğine gidin, ardından Anlık Görüntülerin / Sürümlerin Zorla Güncellemesini Zorla'yı kontrol edin , ardından Tamam'a tıklayın . Bitti!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.