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/ 에서 추가한다.

DB와 관련 의존성
  1. ojdbc11

  2. MyBatis

  3. Spring-MyBatis

  4. Spring-JDBC

  5. common-dbcp

  6. log4jdbc-remix -> 쿼리출력용 의존성

기타 의존성
  1. lombok

  • 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