Spring Framework 부터는 라이브러리를 xml파일에 명시하고
이를 토대로 Maven이라는 툴이 자동으로 다운로드 해서 관리 해줄 것이다.
먼저 해당 파일의 xml 내용을 확인해보자
<?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.kh</groupId>
<artifactId>tsp</artifactId>
<name>testSpringProject</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.0.8.RELEASE</org.springframework-version>
<org.aspectj-version>1.8.13</org.aspectj-version>
<org.slf4j-version>1.7.25</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>
이 파일은 Legacy Project를 생성하면 자동생성 된다.
주목해서 볼 부분은
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.0.8.RELEASE</org.springframework-version>
<org.aspectj-version>1.8.13</org.aspectj-version>
<org.slf4j-version>1.7.25</org.slf4j-version>
</properties>
Properties의 기본 버전 설정들과
<dependencies>
<!-- Spring -->
<dependency>
dependencies안에서 시작하는 dependency 태그들이다.
dependency 태그들이 우리가 원하는 라이브러리를 명시하는 부분이고
Maven 툴은 이 파일을 읽어 명시한 dependency 태그를 토대로 다운로드 및 업데이트를 진행한다.
이 dependency 태그들은 MVNrepository 라는 페이지에서 복사해서 붙여넣기만 하면 된다.
위 사이트로 들어가 맨 위 검색창에 원하는 라이브러리를 검색하고
ojdbc6을 예로 든다.
원하는 라이브러리를 클릭
원하는 버전을 클릭, 원래는 수십개씩 나열되어 있다.
선택 기준은 Usages, 사용율이 높은 쪽을 선택하는걸 추천한다.
버전이 높다고 무조건 좋은건 아니다.
다른 라이브러리와 충돌이 나는 경우도 많기 때문에...
버전을 클릭하면 다음 화면이 나온다.
이 화면에서 Maven 탭을 누르면 다음과 같이 dependency 태그를 준다.
이 태그를 복사해서 pom.xml에 복사하고 저장하면 Maven 업데이트가 시작된다.
본 블로그에서 사용할 라이브러리들은 다음과 같이 추가하였다.
테스트 당시 충돌은 없었고 몇번의 다운로드 오류로
repository 폴더의 라이브러리들을 몇번 다 지웠다가 다시 다운로드 했다.
충돌이 나거나 다운로드를 잘못 했다는 기준은
Problems 탭에 빨간색 글씨로 오류가 발견되거나
해당 프로젝트를 톰캣에 올리고 시작하면
서버가 다 켜지기도 전에 오류 발생 메세지를 띄운다.
오류 발생 시 그냥 톰캣 오류라고 뜨기 때문에 오류를 찾기 힘들다.
그러므로 편하게 라이브러리 전부 지우고 다시 설치하고 반복하는게 제일 빠르다.
라이브러리가 많아지면 프로젝트가 무거워지고 톰캣 구동시간이 길어질 수 있다.
해당 블로그에서 사용 할 dependency 태그들은 다음과 같다.
<!-- jdbc 라이브러리 추가 -->
<dependency>
<groupId>com.jslsolucoes</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
<!-- 마이바티스 라이브러리 추가 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- spring-jdbc 추가 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- 마이바티스 스프링 모듈 추가 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- dbcp 라이브러리 추가 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- 스프링 시큐리티 모듈 추가 -->
<!-- core, web, config 가 필요하다. -->
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
<!-- AOP관련 라이브러리 추가 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/cglib/cglib -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!-- jackson 추가 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- Json lib ext 추가 -->
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib-ext-spring -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib-ext-spring</artifactId>
<version>1.0.2</version>
</dependency>
다음의 포스트부터는 이 라이브러리들이 정상적으로 받아져서
톰캣 실행이 잘 된다는 가정하에 포스트함
사용한 버전들은 version 태그에 잘 써있음
'Spring Framework, MyBatis > 01. 설치 및 설정' 카테고리의 다른 글
[Spring Framework]01-08.Context.xml 파일들의 서블릿 맵핑(Servlet Mapping) 경로 관리 (0) | 2019.01.31 |
---|---|
[Spring Framework]01-07.형상관리(Git) 사용 시 업로드 폴더 예외처리 규칙 설정 (0) | 2019.01.31 |
[Spring Framework]01-06.Maven의 repository 경로(라이브러리 저장 경로) 관리 (0) | 2019.01.31 |
[Spring Framework]01-05.Spring Framework 구조 및 파일, 설정 설명 (0) | 2019.01.29 |
[Spring Framework]01-04.Spring Framework 설치하기 (0) | 2019.01.28 |