이클립스에서 스프링 개발을 공부하던 중에 Maven Dependencies를 제대로 가져오지 못하는 문제가 발생하였다. 처음에는 프로젝트에 빨간색 'x'표시가 있어서 정확한 원인을 파악하기 힘들었다. 그런데 이클립스의 자동완성 기능인 ctrl+space가 작동하지 않았다. 그래서 Maven Dependencies를 열어보았더니 우선 springframework의 core 등의 파일이 없고, context만 있었다. 아마도 무선 네트워크 환경이라 그런지 정확한 원인은 모르지만, 실습하는 컴퓨터에서 이전에 스프링 프로젝트를 한적이 없어서 Maven Dependencies를 미리 세팅한적이 없다. 따라서 많은 Maven Dependencies를 한번에 다 받지 못해서 발생하는 문제인 것 같았다.
그래서 org.springframework부터 순서대로 의존을 추가하였다. 그런데 주의할 점은 repository가 별도로 설정되어 있는 상태로 주입을 하면, 역시나 원활하게 의존이 추가되지 않는다. 그래서 repository태그를 잠시 지웠다가 ojdbc6를 받을때 다시 추가해주었다. 이렇게 하나씩 추가하다가 제대로 가져오지 못하는 의존파일이 생기면, 해당 경로 C:\Users\UserName.m2\repository\에서 각 groupId에 해당하는 경로의 파일을 모두 지우고 다시 받아주면 전체 의존파일이 정상적으로 추가된다.
가장 큰 문제는 ojdbc6였다. 나머지 의존파일들은 그냥 기본 Maven Repository를 통해 받으면 되었는데, ojdbc6는 별도의 repository를 설정하여 다운로드 받아야했다. 하지만 해당 경로를 찾아가보면 C:\Users\UserName.m2\repository\com\oracle\ojdbc6\11.2.0.3 에 ojdbc6-11.2.0.3.jar 파일을 있는데 프로젝트에는 여전히 에러가 표시되었다. 그래서 직접 웹 상에서 ojdbc6를 찾았다. (결국 JSP에서의 방식과 다를바가 없어졌다..)
http://www.datanucleus.org/downloads/maven2/oracle/ojdbc6/11.2.0.3/
해당 파일을 다운로드 받은 후, Maven의 경로에 있는 같은 이름의 파일에 덮어씌워주면 정상적으로 동작한다.
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>kr.co.test</groupId>
<artifactId>SpringJDBC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- xml에서 사용할 속성들 -->
<properties>
<!-- 자바 버전 -->
<java-version>1.8</java-version>
<!-- 스프링 버전 -->
<org.springframework-version>5.1.9.RELEASE</org.springframework-version>
<!--<org.springframework-version>4.3.25.RELEASE</org.springframework-version> -->
<org.slf4j-version>1.7.26</org.slf4j-version>
<ch.qos.logback-version>1.2.3</ch.qos.logback-version>
<javax.annotation-version>1.3.2</javax.annotation-version>
<org.aspectj-version>1.9.4</org.aspectj-version>
<com.oracle-version>11.2.0.3</com.oracle-version>
<org.apache.commons-version>2.7.0</org.apache.commons-version>
</properties>
<!-- Repository 정보 -->
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
<url>http://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>
<!-- 프로젝트에서 사용할 라이브러리 정보 -->
<dependencies>
<!-- spring context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<!-- logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${ch.qos.logback-version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${javax.annotation-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- oracle jdbc -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${com.oracle-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>${org.apache.commons-version}</version>
</dependency>
</dependencies>
</project>