다음과 같은 오류가 발생합니다.
WAR 조립 오류 : webxml 속성이 필요합니다 (또는 업데이트 모드에서 실행중인 경우 기존 WEB-INF / web.xml).
나는 web.xml
바로 이곳에 도착 했다projectname\src\main\webapp\WEB-INF\web.xml
이 문제의 원인은 무엇입니까?
다음과 같은 오류가 발생합니다.
WAR 조립 오류 : webxml 속성이 필요합니다 (또는 업데이트 모드에서 실행중인 경우 기존 WEB-INF / web.xml).
나는 web.xml
바로 이곳에 도착 했다projectname\src\main\webapp\WEB-INF\web.xml
이 문제의 원인은 무엇입니까?
답변:
maven-war-plugin의 코드 스 니펫을 제공 할 수 있다면 도움이 될 것입니다. web.xml
올바른 위치에 있는 것처럼 보이지만 여전히 위치를 명시 적으로 시도하고 제공 할 수 있습니다.
<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>
이 솔루션은 저에게 효과적입니다 (이전에 2.2를 사용하고있었습니다). 또한 Servlet 3.0에 Java 기반 구성을 사용하고 있으며 web.xml 파일이 필요하지 않습니다.
false
. 따라서 <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin>
충분합니다.
그것은 나에게도 완벽하게 작동합니다.
<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>
이것은 웹 프로젝트에 web.xml을 포함시키지 않았고 maven을 사용하여 전쟁을 일으키려고하기 때문입니다. 이 오류를 해결하려면 pom.xml 파일에서 failOnMissingWebXml 을 false 로 설정해야 합니다.
예를 들면 다음과 같습니다.
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
자세한 내용은 블로그를 참조하십시오 : https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html
XML 기반에서 Java 기반 구성으로 마이그레이션하고 WebApplicationInitializer를 구현하여 web.xml이 필요하지 않은 경우, web.xml 파일이 필요하지 않아도됩니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
...
</configuration>
나는 똑같은 문제가 있었고 이것을 다음과 같이 해결했다.
그 WEB-INF
아래에 이름이 지정된 새 폴더를 만듭니다.src/main/webbapp
당신의 오른쪽 클릭 프로젝트-> Java EE 도구-> 배치 디스크립터 스텁 생성을
이것은 당신을 생성해야합니다 web.xml
나는 이것이 당신의 문제를 해결함으로써 도움이되기를 바랍니다 : D
올바른 위치에 web.xml이있는 것처럼 보이지만이 오류는 종종 Maven이 예상하는 것과 일치하지 않는 디렉토리 구조로 인해 발생합니다. 예를 들어 Maven으로 빌드하려는 Eclipse 웹 애플리케이션으로 시작하는 경우.
그것이 문제라면, 빠른 수정은 a
src/main/java
와 a 를 만드는 것입니다 .
src/main/webapp
디렉토리 (필요한 경우 다른 디렉토리)를 작성하고 파일을 이동시키는 것입니다.
다음은 maven 디렉토리 레이아웃에 대한 개요입니다. http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
기본 프로젝트 경로를 변경하는 경우 다음과 같이 web.xml 파일의 위치를 지정해야합니다.
<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>
문서에 따라 다음과 같이 표시됩니다. web.xml 파일이 누락 된 경우 빌드 실패 여부입니다. web.xml 파일없이 WAR을 빌드하려면 false로 설정하십시오. web.xml 파일이없는 오버레이를 빌드하는 경우 유용 할 수 있습니다. 기본값은 true입니다. 사용자 속성은 failOnMissingWebXml입니다.
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<extensions>false</extensions>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration> </plugin>
더 명확 해지기를 바랍니다.
그것은 나에게도 효과가있었습니다.
<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
됩니다.. 이것을 추가하지 않으면 오류가 발생합니다.
WEB-INF\web.xml already added, skipping
테스트 서버에서 동일한 오류가 있었지만 로컬에서는 아닙니다. 몇 분 후 IDE가 pom.xml과 동기화되지 않았 음을 발견했습니다. 내가 해결하는 방법은 다음과 같습니다.
파일이 더 이상 /src/main/webapp/WEB-INF/web.xml에 있도록 폴더 구조가 변경 되었습니까 ?
이 문제를 해결하기 위해 웹 폴더에 webapp라는 이름을 지정하고 src / main 안에 배치했습니다. Maven은 기본적으로 /src/main/webapp/WEB-INF/web.xml 에서 web.xml을 찾는 것 같습니다 . 이렇게하면 web.xml이 어디에 있는지 maven에 명시 적으로 말할 필요가 없습니다. 폴더 구조를 변경하고 빌드가 최근에 작동을 멈춘 경우 이것이 바로 그 이유 일 수 있습니다.
참고 : 이것은 오래된 게시물이지만 게시 된 솔루션은 왜 작업 빌드가 갑자기 작동을 멈출지를 지적하지 않습니다.
많은 답변이 있으며 대부분이 효과가 있지만 더 중요하지 않은 점을 하나 더 추가하겠습니다.
로그 메시지에 따르면을 사용하고 maven
있습니다. Maven은 일부 규칙을 기반으로하는 프로젝트 관리 빌드 도구입니다. 프로젝트를 빌드하고 적절한 디렉토리 구조를 작성하며 파일 Sun Microsystems Directory Structure Standard
을 Java EE / Web 애플리케이션을 준수하는 해당 디렉토리에 배치합니다 .
maven 플러그인, 프로젝트 루트 디렉토리 변경 / 재구성 등을 포함하여 많은 것을 통합 할 수 있지만 간단한 단계가 하나 있으며 프로젝트는 괜찮습니다. 당신의 web.xml
아래에 배치 src\main\webapp\WEB-INF\
하고 프로젝트를 구축하려고mvn package
.
이것이이 문제에 약간 더 가벼워지기를 바랍니다.
당신이에 pakage 파일 메이븐에게 전하고 때문에이 오류가 발생 전쟁 .
<packaging>war</packaging>
정말로 전쟁이 필요합니까? 그렇지 않은 경우, 항아리를 거기에 두십시오. 전체 코드는 다음과 같습니다.
<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-plugin에서 사용하는 기본값이 변경 되었기 때문에 다른 모든 대답은 더 이상 사용되지 않을 수 있습니다 .
3.1.0부터 프로젝트가 Servlet 3.0 API 이상에 의존하는 경우이 특성의 기본값은 false입니다.
그래서 당신이해야 할 유일한 것은 추가하는 것입니다
<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>