본문 바로가기

개발/Spring

[SpringBoot] WAR - mvn package시 Error assembling WAR: webxml attribute is required 에러 해결방안

728x90
반응형

 

SpringBoot  웹 어플리케이션을 개발 후 war 방식으로 package시 web.xml이 필수라고 에러발생!!!

[SpringBoot] Error assembling WAR: webxml attribute is required

 

[DEBUG] Excluding [] from the generated webapp archive.
[DEBUG] Including [**] in the generated webapp archive.
[INFO] Building war: D:\Develop\Workspace\wyleedp\devcode\devcode-web\target\devcode-web-0.0.1-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.749 s
[INFO] Finished at: 2023-01-18T08:45:20+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project devcode-web: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project devcode-web: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    ... 생략 ...
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
    at org.apache.maven.plugin.war.WarMojo.execute (WarMojo.java:193)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    ... 생략 ...
Caused by: org.codehaus.plexus.archiver.ArchiverException: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)

개발환경정보

  • JDK 11
  • SpringBoot 2.7.7
  • Maven 3.8.6

확인결과

WAS(예:톰캣)에서 WAR 파일을 실행할때 web.xml이 필수로 존재하여야 어플리케이션이 작동하는데 해당 파일이 없어서 에러가 발생하는 것으로 확인

하지만 Servlet 3.0 스펙부터는 web.xml이 필수가 아니기 때문에 mvn package시 web.xml 생성 관련옵션을 지정하면 문제 없이 해결된다.

해결방법

pom.xml에서 properties > failOnMissingWebXml 옵션을 false로 지정하면 문제없이 패키징이 된다.

[pom.xml] failOnMissingWebXml 옵션
WAR 패키징 성공

java -jar 방식으로 실행시 예외사항

패키징한 WAR 파일을 java -jar 방식으로 실행시 ClassNotFound 관련에러가 발생하면 maven golas에 spring-boot:repackage 를 추가하여 실행하거나 pom.xml에 repackage 설정을 지정하면 된다.

1. maven goal 추가방식

2. pom.xml - repackage 옵션 지정방식

[pom.xml] repackage 지정

 

728x90
반응형