Aşağıdaki hatayı alıyorum:
WAR derleme hatası: webxml özelliği gerekiyor (veya güncelleme modunda yürütüldüğünde önceden var olan WEB-INF / web.xml)
web.xml
Doğru yere girdim kiprojectname\src\main\webapp\WEB-INF\web.xml
Buna ne sebep olabilir?
Aşağıdaki hatayı alıyorum:
WAR derleme hatası: webxml özelliği gerekiyor (veya güncelleme modunda yürütüldüğünde önceden var olan WEB-INF / web.xml)
web.xml
Doğru yere girdim kiprojectname\src\main\webapp\WEB-INF\web.xml
Buna ne sebep olabilir?
Yanıtlar:
Maven-war-plugin'inizin bir kod snippet'ini sağlamanız yararlı olacaktır. Görünüşe göre web.xml
doğru yerdedir, yine de konumu açıkça deneyebilirsiniz
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Bu çözüm benim için çalışıyor (daha önce 2.2 kullanıyordum). Ayrıca, Servlet 3.0 için Java Tabanlı Yapılandırma kullanıyorum ve web.xml dosyasına gerek yok.
false
. Yani, <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin>
yeterli olmalı.
Benim için de mükemmel çalışıyor.
<project>
.....
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
Bunun nedeni, web projenize web.xml dosyasını eklememeniz ve maven kullanarak savaş oluşturmaya çalışmanızdır. Bu hatayı gidermek için ayarlamanız gerekir failOnMissingWebXml için YANLıŞ pom.xml dosyasında.
Örneğin:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Daha fazla ayrıntı için lütfen bloga bakın: https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html
XML tabanlıdan Java tabanlı yapılandırmaya geçiyorsanız ve WebApplicationInitializer'ı uygulayarak web.xml gereksinimini kaldırdıysanız, web.xml dosyasının mevcut olması gereksinimini kaldırın.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
...
</configuration>
Çalışmak için webXml etiketimin değeri aşağıdaki gibi görünüyordu:
<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml>
<warSourceDirectory>\src\main\webapp</warSourceDirectory>
! V2.6'da değil
Ben tam olarak aynı sorunu vardı ve ben böyle çözdü:
Adlı yeni bir klasör yapın WEB-INF
altında src/main/webbapp
o zaman
Projenize Sağ Tıklayın -> Java EE Araçları -> Dağıtım Tanımlayıcı Saplaması Oluştur
Bu, web.xml
Umarım bu sorununuzu çözerek yardımcı olur: D
Doğru konumda web.xml varmış gibi görünüyor, ancak buna rağmen, bu hata genellikle Maven'in görmeyi beklediği dizin yapısıyla eşleşmiyor. Örneğin, Maven ile oluşturmaya çalıştığınız bir Eclipse webapp ile başlarsanız.
Sorun buysa, hızlı bir düzeltme bir
src/main/java
ve bir
src/main/webapp
dizin (ve gerekirse diğer dizinleri) oluşturmak ve dosyalarınızı taşımaktır.
Maven dizini düzenine genel bakış: http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
Varsayılan proje yolunu değiştirirseniz, web.xml dosyasının konumunu belirtmeniz gerekir, örneğin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<webXml>src\main\web\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
Belgelere göre şöyle diyor: web.xml dosyası eksikse derlemenin başarısız olup olmayacağı. Web.xml dosyası olmadan WAR oluşturulmasını istiyorsanız false olarak ayarlayın. Web.xml dosyası olmayan bir kaplama oluşturuyorsanız bu yararlı olabilir. Varsayılan değer: true. Kullanıcı özelliği: failOnMissingWebXml.
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<extensions>false</extensions>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration> </plugin>
Umarım daha açık hale getirir
Benim için de çalıştı.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
WEB-INF\web.xml already added, skipping
. Bu garip, bunu eklemediğimde hatayı aldım.
WEB-INF\web.xml already added, skipping
Test sunucusunda aynı hatayı aldım ama yerel olarak değil. Birkaç dakika sonra IDE'nin pom.xml ile senkronize olmadığını keşfettim. İşte nasıl çözdüğüm:
Pom.xml dosyasının Project klasörüne düzgün bir şekilde yerleştirildiğinden emin olun. hedef klasörde veya başka bir yerde değil.
Görünüşe göre pom.xml nispeten hizalanmamış.
Klasör yapınız artık dosya /src/main/webapp/WEB-INF/web.xml adresinde artık kalmayacak şekilde değiştirildi mi?
Bu sorunu çözmek için, web klasörüme webapp adını verdim ve src / main içine yerleştirdim. Maven, varsayılan olarak /src/main/webapp/WEB-INF/web.xml adresinde web.xml dosyasını arıyor gibi görünüyor . Bunu yaparsanız, maven'e web.xml'nin nerede olduğunu açıkça söylemenize gerek yoktur. Klasör yapınızı değiştirdiyseniz ve derlemeniz yakın zamanda çalışmayı durdurduysanız, nedeni bu olabilir.
Not: Bu eski bir yazıdır, ancak gönderilen çözümler çalışan bir yapının neden aniden çalışmayı durduracağına işaret etmez.
Birçok cevap var ve çoğu işe yarayacak, ama bence daha az önemi olmayan bir nokta daha ekleyeceğim.
Günlük mesajınıza göre kullanıyorsunuz maven
. Maven, bazı sözleşmelere dayanan bir proje yönetimi-oluşturma aracıdır. Projeyi derler, uygun dizin yapısı oluşturur ve dosyaları Sun Microsystems Directory Structure Standard
Java EE / Web uygulamaları için uygun dizinlere yerleştirir .
Maven eklentileri, proje kök dizinini değiştirme / yeniden yapılandırma vb. Gibi birçok şeyi dahil edebilirsiniz, ancak yapabileceğiniz basit bir adım vardır ve projeniz iyi olmalıdır. Sadece web.xml
altına yerleştirin src\main\webapp\WEB-INF\
ve projeyi ile inşa etmeye çalışın mvn package
.
Umarım bu soruna biraz daha fazla ışık ekler.
Bu hata Maven'e pakage dosyalarını savaşa bildirdiğiniz için oluşur .
<packaging>war</packaging>
Gerçekten savaşa mı ihtiyacınız var? Değilse, oraya kavanoz koyun. İşte tam kod:
<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>
<version>1.0-SNAPSHOT</version>
<groupId>com.your.groupid</groupId>
<artifactId>artifactid</artifactId>
<packaging>jar</packaging>
Maven-war-eklentisi tarafından kullanılan varsayılan değer değiştiği için , diğer tüm yanıtlar geçersiz olabilir :
Proje Servlet 3.0 API'sine veya daha yenisine bağlıysa, 3.1.0'dan başlayarak bu özellik varsayılan olarak false değerine ayarlanır.
Yani yapmanız gereken tek şey
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<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>foo</groupId>
<artifactId>bar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<tomcat.ignorePackaging>true</tomcat.ignorePackaging>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>