관리 메뉴

개발 블로그

FirstSpringBoard#1-2] 메이븐 의존성 추가 본문

Spring Framework 개발 일지/Spring으로 게시판 만들기

FirstSpringBoard#1-2] 메이븐 의존성 추가

anomie7 2017.08.24 00:10

안녕하세요. 저번 포스팅에서는 STS의 인코딩 방식 설정과 프로젝트 생성까지 했습니다.

이번에는 메이븐으로 프로젝트 구성에 필요한 라이브러리를 추가할게요.

우리 프로젝트에서는 Mybatis라는 DB연동 프레임워크(persistence framework)를 사용할것입니다.

spring에서 Mybatis를 연동하기 위한 라이브러리를 추가할 것이고 테스트 코드 작성을 위한 설정도 할거에요.


1. 우리가 생성한 프로젝트를 보면 pom.xml이라는 파일이 있습니다.

이 파일에서 메이븐 의존성을 추가합니다.




2. pom.xml 파일을 클릭하면 아래와 같은 화면이 보이는데요.

밑의 탭들이 보입니다. Dependencise는 메이븐에서 추가한 라이브러리들을 쉽게 관리할 수 있는 창입니다.

그 옆의 Dependency Hierarchy는 추가한 라이브러리가 의존하는 라이브러리를 볼 수 있는 화면이에요.

그리고 옆의 Effective POM은 지금 우리 프로젝트에 있는 POM 파일의 부모 파일을 볼 수 있는 화면입니다.

메이븐 프로젝트에서는 메이븐에서 제공하는 부모 POM파일을 상속받기 때문에 기본적인 설정이 다 되어있어요.

그렇기 때문에 pom.xml 파일에서 우리가 설정을 해주면 부모 pom.xml 파일의 파일보다 우선되기 때문에 편하게 커스덤마이징을 할 수 있습니다.

우선 pom.xml 탭을 클릭해주세요.


3. 클릭하면 아래와 같은 소스가 보일 것입니다.

우리는 초보자이기 때문에 STS에서 제공하는 설정을 최대한 활용할거에요.

최범균씨 책으로 스프링을 처음 시작할떄 모든 폴더구성을 스스로 하는게 너무 힘들었던 기억이 납니다.

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sample</groupId>
    <artifactId>ve</artifactId>
    <name>mySample</name>
    <packaging>war</packaging>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <properties>
        <java-version>1.6</java-version>
        <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>
    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <!-- Exclude Commons Logging in favor of SLF4j -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                 </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
              
        <!-- AspectJ -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>  
      
        <!-- Logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${org.slf4j-version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.jms</groupId>
                    <artifactId>jms</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
            </exclusions>
            <scope>runtime</scope>
        </dependency>

        <!-- @Inject -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
              
        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
  
        <!-- Test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>      
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <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>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>


4.  우선 봐둬야할 부분은 properties부분이에요. 위 설정파일에서 보듯이 우리가 추가하는 라이브러리가 굉장히 많아요.

라이브러리마다 버전이 굉장히 많은데 properties 엘리먼트를 이용해서 일괄적으로 라이브러리들의 버전을 관리할 수 있어요.

스프링에서 제공하는 모듈들의 버전들을 일치시켜줄 필요가 있는데. 이 엘리먼트를 이용하면 더 편하게 버전을 관리할 수 있겠죠?



5. properties부분을 아래와 같이 바꿔주세요.  프로젝트를 생성하고 바로 자바버전을 1.8로 바꿨었죠? 설정파일에서도 동일하게 바꿔줍니다.

그리고 스프링 버전이 너무 구 버전이네요. 4.1.6 버전으로 바꿔주세요.

보통 최신버전을 사용하는데. 사용하는 중 오류가 있어서 4.1.6으로 설정해주었습니다.


6. 아래로 쭈욱 내리면 built > plugins > plugin에서artifactId: maven-compiler-plugin를 찾을 수 있을거에요.

플러그인 버전을 3.2로 source과 target도 1.8로 바꿔주세요.


7. 이제부터 dependencies 엘리먼트 아래에 필요한 라이브러리를 추가할것입니다.

우선 Junit버전은 4.11로 바꿔주세요. 아래 탭에서 dependencies를 클릭하고 Junit를 선택하고 Properies를 눌러서 버전을 바꿔줍니다.


8. pom.xml 파일을 설정하고 저장하면 빌드는 STS에서 자동으로 해줍니다.  pom.xml 저장 후 package explorer에서 F5를 누른 후 Maven Dependencise에서 Junit 버전이 바뀌었는지 확인해보세요.

9. 우선 마이바티스 연동을 위한 라이브러리들을 추가해줄거에요. mybatis 3.4, mysql-connector-java 5.1.31, common-dbcp 1.4를 추가할겁니다. pom.xml탭으로 돌아가서 꼭 dependenyise엘리먼트아래에 밑의 텍스트를 복사해서 붙여넣어주세요.



10. pom.xml 저장하고 F5눌러서 새로고침한 다음 Maven Dependencise확인해주세요. 잘 추가되었나요?


오늘 실습한 pom.xml 파일은 아래와 같습니다.


이제 실습을 위한 기본적인 개발환경 구성은 완료했습니다.

포스팅이 너무 길어진거같네요.

다음 포스팅에서는 mybatis와 mysql의 연동을 위한 설정파일 추가하고 테스트 코드를 통해서 제대로 연동되는지 확인해 볼게요.

0 Comments
댓글쓰기 폼