본문 바로가기
프로그래밍/스프링프레임워크

Spring MVC 샘플 프로젝트 버전3 에서 버전 4로 마이그레이션 하기

by pentode 2018. 4. 1.

"Spring Framework을 사용한 웹애플리케이션 개발환경 만들기" 에서 기본 설치했던 샘플 Spring MVC 프로젝트의 Spring Framework 버전은 3.1.1 입니다. 이것을 현재 버전인 4.3.4 으로 변경합니다. 간단히 될 줄 알았는데, 내가 이러려고 STS 플러그인을 설치했나 싶을 정도로 이것저것 걸리는게 많더군요. 메이븐을 좀 더 공부해야 겠다는 생각이 절로 듭니다. 먼저 기본환경을 확인해보고 어떻게 변경할지 본 후 설정을 해 봅니다.

 

기본 환경

  - Spring Framework 3.1.1
  - java version 1.6
  - Maven compiler
    source 1.6
    target 1.6
  - servlet-api 2.5
  - jsp-api 2.1

 

변경 될 환경

  - Spring Framework 4.3.4
  - java version 1.8
  - Maven compiler
    source 1.8
    target 1.8
  - servlet-api 3.0
  - jsp-api 2.2

 

설정을 변경해 봅시다. pom.xml 을 수정합니다.

 

1. java version을 1.6 에서 1.8로 springframework 버전을 3.1.1로 4.3.4로 변경합니다.

<properties>
    <java-version>1.8</java-version>
    <org.springframework-version>4.3.4.RELEASE</org.springframework-version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

 

2. Servlet api 버전을 2.5에서 3.0.1 로 변경합니다.   여기에서는 artifactId 도 servlet-api 에서 javax.servlet-api로 바꼈습니다.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

 

3. jsp api 버전을 2.1에서 2.2로 변경합니다.

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

 

4. maven compiler 설정을 소스와 타겟을 1.8로 변경합니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <compilerArgument>-Xlint:all</compilerArgument>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
    </configuration>
</plugin>

 

5. 이제 프로젝트 설정을 수정합니다. 프로젝트 오른쪽 버튼 클릭해서 Properties 를 선택합니다.

 

프로젝트 프로퍼티 메뉴

 

 

6. Java Build Path 를 선택합니다. Libraries 에서 JavaSE1.6을 1.8로 변경합니다. 변경 방법은 "Spring Framework을 사용한 웹애플리케이션 개발환경 만들기" 를 참조하세요.

 

빌드 패스에서 JRE 라이브러리 교체

 

 

7. Java Compiler 설정에서 Compiler compliance level 을 1.8로 지정합니다. Build Path 가 잘 설정되었다면 1.8이 되어 있을 겁니다.

 

자바 컴파일러 설정

 

 

8. Project Facets에서 Dynamic Web Module 을 3.0 으로, java는 1.8로 설정합니다. 설정이 변경이 안되는 경우가 있습니다. 이 때는 이클립스를 종료한 후 프로젝트 폴더아래 .settings 폴더에 있는 org.eclipse.wst.common.project.facet.core.xml 파일을 텍스트 에디터로 열어서 직접 수정한 후 이클립스를 실행하고 다시 변경하면 됩니다.

 

프로젝트 Facets 설정

 

 

9. 프로젝트명에 마우스 오른쭉 키를 누르고 팝업 메뉴에서 Maven -> Update Project 를 선택해서 설정 내용을 적용합니다.

 

메이븐 업데이트 메뉴

 

 

모든 설정이 적용되었습니다. 프로젝트명에 빨간색이 없고, 하단의  Probles 탭에 아무 내용도 없어야 합니다. 물론 실행시켜도 잘 동작해야 합니다. 추가로 적용 도중에 다음과 같은 에러가 발생했었습니다.

 

Archive for required library: 'C:/Users/PENTODE/.m2/repository/org/springframework/spring-beans/4.3.4.RELEASE/spring-beans-4.3.4.RELEASE.jar' in project 'spring_test' cannot be read or is not a valid ZIP file spring_test  Build path Build Path Problem

 

jar 파일이 다운로드 되기는 했지만, 잘못된 파일이라는 내용이 나오더군요. 여기저기 찾아보니 여러가지 해결책이 있었지만, 나의 경우 해결할 수 있었던 방법은 사용자 폴더 아래 maven 로컬 리포지토리를 ( .m2/repository ) 모두 삭제하고, Maven -> Update Project 를 다시 실행하니 해결이 되었습니다.

 

 

※ 추가

댓글에서 update문제 님이 제가 빼먹은 부분을 찾아 주셨네요. 감사합니다. 서블릿 스펙이 변경되면 web.xml 파일의 DTD 도 버전에 맞게 수정되어야 합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
</web-app>

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
</web-app>

 

반응형