이클립스 Open Resource 창에서 특정 파일 및 폴더 제외 방법

개발툴|2014. 6. 27. 15:00

이클립스에서 개발을 진행하다 보면 특정 파일을 빠르게 찾고자 할 때 많이 사용하는 기능이 Open Resource이다. 단축키로는 CTRL + SHIFT + R


만약 FileUtils 라는 java 파일을 찾고싶을 때 이 기능을 사용하게 되면 FileUtils.java와 FileUtils.class 파일이 동시에 Matching items 영역에 표시가 되는 경우가 있다.


이렇게 표시가 되는 이유는 메이븐 프로젝트를 이용하여 개발을 진행할 때 target 디렉토리에 컴파일된 파일들이 존재하기 때문이다.


이상한점은 메이븐 단일 프로젝트로 구성되어 있는 경우 Open Resource에서 java 파일을 검색해도 class 파일은 출력되지 않았다. 물론 target 디렉토리에는 class 파일들이 존재하고 있는 상태였어도.


헌데 메이븐 멀티모듈 프로젝트로 개발을 진행하며서부터 class 파일도 함께 Matching items 영역에 표시가 되었다.


결국 이런 증상 때문에 mvn clean을 통해서 target 디렉토리의 하위 소스들을 삭제하는 방법으로 class파일 노출 문제를 해결하였다.


하지만 이 방법은 깔끔하지가 않았기에 더 괜찮은 방법을 찾아보기로 하였다.


일단 단일 메이븐 프로젝트와 멀티모듈 메이븐 프로젝트로 프로젝트가 구성되었을 때 나타나는 차이점에 대해서는 다음과 같은 결론을 얻게 되었다.

단일 메이븐 포르젝트의 target 디렉토리를 선택한 후 오른쪽 마우스 클릭을 통해 Properties 설정으로 이동하면 Resource 메뉴에 Derived 옵션이 체크되어 있는 것을 확인할 수 있다.



이 옵션이 체크되어 있으면 Open Resource창에서 파일을 검색할 때 해당 target 디렉토리는 제외가 된다는 것을 알게 되었다. 기본적으로 이클립스에서 메이븐 프로젝트를 구성하게 되면 디폴트로 Derived 옵션을 체크하는 것 같다.


허나 메이븐 멀티 모듈 프로젝트의 루트 프로젝트 내부에 존재하는 target 디렉토리에는 해당 옵션이 체크되어 있지 않았다.

그렇기에 class 파일이 함께 검색되어지게 된 것이다.

자~ 이제 문제를 찾았으니 서브 모듈 프로젝트에 존재하는 target 디렉토리의 properties 속성에 들어간 후 Derived 옵션을 체크할까?

지금 당장은 서브 모듈 프로젝트가 별로 없지만 나중에 많아진다면? 

나 말고 다른 개발자도 나와 똑같은 노가다를 해야 하는 걸까? 

만약 workspace에서 프로젝트를 삭제한 후 다시 형상관리에서 소스를 체크아웃 받아야 하는 상황이 발생된다면?

여러 가지 상황을 고려해 봤을 때 이와 같은 방법은 비추였다. 그래서 난 좀더 스마트한 방법을 찾아보기로 하였다.


그 결과 아주 유용한 방법을 알게 되었다.

메이븐 루트 프로젝트의 Properties클릭 > Resource > Resource Filters 메뉴로 이동한다.

그런 후 "Add..." 버튼을 클릭하여 다음과 같이 설정을 추가해주도록 한다.


이렇게 설정을 추가해 주면 Open Resource창에서는 더이상 target 디렉토리에 존재하는 파일은 검색되지 않을 것이다.

이클립스에 이런 Resource Filters 기능이 존재한다는 것을 알게 되었으니 이후에 특정 파일이나 디렉토리를 제외하고 싶을 때 언제든지 이 기능을 이용하면 될 것이다.

댓글()