Maven 설정
생성된 MVC프로젝트의 pom.xml문서의 설정을 변경한다.
Maven ?
Maven은 프로젝트의 버전관리, 의존성 라이브러리 관리, 배포관리등을 문서형태로 관리할 수 있도록 도와주는 유용한 프로젝트 관리 도구이다.
Maven은 각종 설정 정보들을 하나의 pom.xml파일로 관리한다.
이제까지 프로젝트 내 lib 폴더에 사용할 라이브러리를 직접 추가하여 관리 해왔다면, Maven은 pom.xml 문서 하나만으로 필요한 라이브러리를 자동으로 설치하고 관리할 수 있다
Maven 다운로드는 Spring 개발환경 구축 참고
현재문서에서는 pom.xml내부의 주요 태그들에 대한 설명과 사용방법에 대해서만 다룰예정으로 자세한 설명은 정식 메뉴얼을 참조하도록 하자 메이븐 :https://maven.apache.org/
Intro
MVC템플릿으로 프로젝트생성시 pom.xml 내부 프로젝트의 자바버전은 1.6버전 , Spring Framework는 3버전으로 설정되어있다. 메이븐 프로젝트는 pom.xml의 설정정보를 기반으로 프로젝트를 빌드&배포하기 때문에 사용하고자 하는 자바의 버전, 스프링 프레임워크의 버전으로 pom.xml의 내요을 고쳐쓴 후 Maven정보를 Update해줘야 한다.
프로젝트에 대한 정보를 저장하는 태그
<modelVersion>4.0.0</modelVersion> <!-- pom.xml의 버전정보 -->
<groupId>com.kh</groupId> <!-- 2레벨까지의 패키지 경로. 일반적으로 그룹(회사)의 이름이 들어감. -->
<artifactId>spring</artifactId> <!-- 3레벨 패키지의 경로. 일반적으로 어플리케이션의 이름이 들어감 -->
<name>springProject</name> <!-- 프로젝트명 -->
<packaging>war</packaging> <!-- 어플리케이션 배포시의 압축형태-->
<version>1.0.0-BUILD-SNAPSHOT</version> <!-- 어플리케이션의 버전정보 -->
Properties
pom.xml문서 내에서 사용할 설정파일들에 대한 버전정보를 관리하기 위한 변수를 설정하는 태그.
Spring Framework의 의존성들을 사용할때 같은 버전의 의존성을 사용해야 버전충돌로 인한 에러를 방지할 수 있다.
${태그명} 으로 버전정보를 출력
<properties>
<java-version>11</java-version>
<org.springframework-version>5.3.20</org.springframework-version>
<org.aspectj-version>1.9.4</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
java-version
프로젝트 컴파일러 플러그인 내부의 자바버전이 기본 1.6버전으로 설정되어 있으므로 수정하자.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<!-- <source>1.6</source> -->
<!-- <target>1.6</target> -->
<source>${java-version}</source>
<target>${java-version}</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
repositories
프로젝트에서 사용할 의존성들을 기본저장소(https://repo.maven.apache.org/maven2/)에서 다운로드 받지 못 할 경우 대체 저장소를 지정할 수 있는 태그. 기본설정에 추가되어 있지 않기 때문에 직접 추가해줘야 한다.
<repositories>
<repository>
<id>Datanucleus</id>
<url>https://www.datanucleus.org/downloads/maven2/</url>
</repository>
...<!-- 여러 저장소 추가 가능 -->
</repositories>
Dependencies
프로젝트에서 사용할 의존성 정보들을 선언하는 영역. 각 의존성은 <dependency>태그로 관리한다.
각 의존성은 https://mvnrepository.com/ 에서 추가한다.
servlet버전변경(web.xml의 web-app버전과 함께 변경해줘야한다)
servlet-api는 4버전 이상부터 jakarata 패키지로 관리된다.
톰캣에서 servlet 3버전을 구현했다면 3버전을(톰캣9버전), 톰캣에서 servlet4버전이상(jakarata)를 구현했다면 servlet4버전으로 변경해줘야 한다.
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<!-- <artifactId>servlet-api</artifactId> -->
<artifactId>javax.servlet-api</artifactId>
<!-- <version>2.5</version> -->
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Plugins
Maven이 프로젝트를 빌드시 사용하는 플러그인들에 대한 설정정보를 담고있는 태그들.
빌드방식 변경이나 외부 플러그인을 추가하고자 한다면 이곳에 작성하면된다.
Maven 업데이트 방법
일부 의존성을 자동배포설정으로는 적용이 안될수도 있는데 이때는 메이븐 강제 업데이트를 적용시켜줘야한다.


Last updated