자바 프로젝트의 경우 웹 프로젝트로 변경 시 수정해야 할 것이 많으나 Maven 프로젝트는 이에 대해 편의를 제공해준다.
웹 프로젝트로 변경
다음과 같이 <packaging> 태그 내용을 jar에서 war로만 바꿔주면 된다.
war는 Web application ARchive의 약자이다.
이후 프로젝트 업데이트를 진행하게되면 구조가 바뀌면서 에러가 발생하는데 이는 web.xml 문서가 없기에 나타나는 문제이다.
**만약 첫줄(<project xmlns....)에서 에러가 발생한다면 맨 아래 해결 방법을 적어뒀음**
다음과 같이 webapp 폴더 내에 WEB-INF폴더를 생성하고 그 안에 web.xml를 추가해준다. (apache-tomcat-8.5.83에 있는 web.xml 파일 붙여넣음)
이후 webapp 폴더에 index.html 파일을 생성하여 테스트하면 정상적으로 작동하는 것을 확인할 수 있다.
문제
war로 패키징되는 메이븐 프로젝트를 생성한 뒤 아래 에러가 발생했다.
Exception java.lang.ExceptionInInitializerError:
Cannot access defaults field of Properties
[in thread "Worker-30: Building"]
에러가 표시되는 부분은 pom.xml의 첫줄 <project xmlns=...이다.
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>in.wonj</groupId>
<artifactId>myArtifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
...(생략)...
</dependency>
...(생략)...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<release>18</release>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
해결
pom.xml에 maven-war-plugin플러그인을 추가한다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>