본문 바로가기
개발툴

Eclipse Deployment Assembly 설정 주의사항 (메이븐 프로젝트인 경우)

by 탁구치는 개발자 2014. 6. 19.

메이븐 프로젝트 기반의 Dynamic Web Project 개발 시 주의 사항이 있다.

팀 동료가 겪은 오류 사항이지만 막상 나에게 닥쳤다면 분명 삽질 좀 했을 것이다. 그러하기에 정리함. ^^


메이븐 프로젝트는 기본적으로 다음과 같은 폴더 구조를 가지게 되고, 

src/main/java

src/main/resources

src/test/java

src/test/resources


해당 프로젝트에 Dynamic Web Module 설정을 추가해주게 되면 Deployment Assembly 설정이 다음과 같은 화면으로 기본 셋팅이 된다.



Deployment Assembly 설정이 어떤 기능을 하는지에 대해서는 다음의 포스팅을 읽어보면 된다.

http://lng1982.tistory.com/115


위와 같은 환경에서 문제가 발생되는 상황은 이러하다.

src/main/resources 하위에 config.properties 파일이 존재하고, src/test/resources 하위에도 동일한 파일이 존재할 때 이클립스의 내장 톰켓 배포 디렉토리에는 src/test/resources의 config.properties가 존재하게 된다.

test 코드 하위에 있는 config.properties 파일이 배포 디렉토리에 배포가 되는 이유는 Deployment Assembly에 src/test/resources가 등록되어 있기 때문이다. 즉, 이클립스에서 가상 배포 디렉토리로 배포할 때 src/main/resources 디렉토리에 있는 config.properties 파일을 먼저 배포하게 될 것이고, 그 다음으로 src/test/resources 디렉토리에 있는 config.properties 파일을 배포하기 때문에 파일을 덮어 버리는 현상이 발생하는 것이다. 


src/test/java도 함께 등록되어 있으니 이것도 문제가 되지 않겠냐라는 의문을 가질 수 있겠지만 다행히 같은 패키지 내에서 같은 class로 파일을 생성할 수 없으니 위와 같이 파일을 덮어 버리는 현상은 없다.


여하튼 이런 문제를 해결하기 위해서는 Deployment Assembly 설정에 들어가 src/test/java, src/test/resources 를 삭제해 주면 된다.