이클립스를 최신 버전으로 쉽게 업데이트할 수 있는 구성 만들기
최신 버전의 이클립스를 설치할 때, 특히 공식 릴리즈가 아닌 Milestone 버전을 사용할 경우 유용한 팁입니다. 3.4M4 사용하다가 이번에 새로 나온 3.4M5 설치했는데 여타 플러그인(특히 Subversive) 다시 설치하기가 너무 귀찮아서 조금 손대봤더니 간단히 잘 되는 것 같습니다. Product Extension을 사용하는 것이며 기본적인 개념은 “이클립스 RCP(책)“에서도 설명하고 있는 내용입니다만 실제 적용 How-To를 정리해보았습니다. 초반에 개념 설명을 조금 덧붙였는데 플러그인 개발자가 아닌 분은 적용법만 그대로 따라하셔도 됩니다.
Concepts
이클립스는 Update Site를 사용한 자체 업데이트 메카니즘을 제공하고 있기 때문에 업데이트에 있어서 별다른 불편은 없습니다만, 몇가지 아쉬운 점이 있습니다.
- 최신 Milestone 또는 Integration 버전처럼 업데이트 사이트가 아예 제공되지 않는 경우
- 최신 배포판을 다운로드 받아 한번에 업데이트 하고자 하는 경우, 그대로 압축을 풀어 덮어 써도 되지만 기존 플러그인이 그대로 남아있어서 지우려면 일일이 직접 찾아서 지워야 함
- 여러 버전을 사용할 때 설치된 이클립스마다 부가 플러그인을 모두 각각 업데이트해야 함
위와 같은 문제가 발생하는 것은 기본 구성(Configuration) 하에서는 이클립스 메인 피처와 여타 외부 피처 등을 모두 한 디렉토리에서 관리하기 때문입니다. Configuration의 정확한 의미는 플러그인 개발자라면 아시겠지만 일반 사용자라면 다소 어색할 수 있는데, 여기서 Configuration이라 함은 단순히 환경설정의 의미가 아니라 이클립스의 피처나 플러그인의 배치 구성을 의미하는 이클립스 용어입니다. 이클립스 메뉴에서 Help > Software Updates > Manage Configuration의 Configuration이 그러한 의미입니다.

우리가 일상적으로 사용하는 이클립스는 Product로 배포된 것이며, Product는 “실행 런처 + 플러그인/피처 묶음”이라 볼 수 있습니다. 이클립스 기반 소프트웨어의 배포 형식에는 Product 이외에도 Extension 이라는 것이 있습니다. Extension은 일부 이클립스 기반 상용 제품에서만 활용할 뿐 사용자들이 직접 활용하는 경우는 드문 듯 합니다만, 이 용어는 오히려 플러그인 개발자에게 헷갈릴 법한 용어인데요, Extension Point에 대응하는 플러그인 내장 Extension이 아니라 Product에 대응하는 Product Extension이라는 완전히 별개의 개념입니다. Product에서 실행 런처를 제거한 것, 즉 “only 플러그인/피처 묶음”이 Product Extension이라 볼 수 있습니다.
Product Extension은 이름만큼 거창한 것이 전혀 아닙니다. 소프트웨어 실행에 필요한 종속성이나 심지어 라이센스 정보 등까지 이미 피처 레벨에서 관리하고 있기 때문에 Product가 그렇듯 Product Extension은 플러그인/피처가 모여있는 공간에 지나지 않습니다. Product Extension의 가치는 단 한가지 Product Installation(달리 말하면 이클립스 설치 디렉토리) 외부에도 플러그인/피처를 모아놓는 공간을 둘 수 있다는 점입니다.
이를 사용해서 기존에 설치되어 있던 이클립스 디렉토리를 Product Extension으로 변환하고 새로 설치된 이클립스에서 Extension을 끌어다 사용하면 기존에 설치된 모든 플러그인/피처를 그대로 활용할 수 있습니다. 이클립스를 몇번 다시 다른 위치에 설치하더라도 말이죠.
How To
기존 이클립스 설치를 Extension으로 변경
- 이클립스 설치 디렉토리로 간다.
- .eclipseproduct를 복사하여 .eclipseextension이라는 파일을 생성한다.
- .eclipseproduct 파일의 이름을 .eclipseproduct.bak로 변경한다.
새로 설치할 버전의 이클립스의 압축을 어딘가 다른 위치에 푼다.
Help > Software Updates > Manage Configurations 메뉴를 선택한다.
오른쪽 트리에서 최상위 Product 노드를 오른클릭하고 Add > Extension Location… 선택 (또는 오른쪽에 보이는 Add an Extension Location 링크를 클릭)
디렉토리 선택 대화창에서 Extension으로 변환된 기존 이클립스 디렉토리를 선택
이제 재시동 여부를 물어보면 바로 이클립스를 재시동합니다. 확실하게 하려면 재시동하기 전에, 추가된 Extension에서 기존의 Eclipse SDK 피처를 disable시켜 주세요. 물론 이클립스 시동시 기존 버전은 자동으로 disable되긴 합니다.
설치 및 설정이 완료되면 다음과 같이 Eclipse SDK Installation과 기타 플러그인/피처 Installation이 분리됨을 볼 수 있습니다. 물론 실행은 SDK의 버전이 올라간 것을 제외하고는 기존과 똑같이 됩니다. 윈도우처럼 레지스트리를 쓰는 것도 아니고 바뀐 게 딱 그것 뿐이니까요. 이러한 구성 정보는 워크스페이스가 아니라 eclipse/configuration에 저장된다는 점을 유의하세요. 워크스페이스 바뀐다고 플러그인을 못쓰면 큰일나는 거니 당연한 것이지만, 제 경우 자꾸 configuration의 존재에 대해 잊어버리곤 해서 워크스페이스 바꾸면서 제대로 실행안되면 어쩌나하고 순간 당황했습니다. ^^ 물론 플러그인 개발자 입장에서는 configuration이야 어찌되던 상관없이 실행이 되야 하니 아예 머리 속에서 지우는 것도 좋습니다만.

다음은 새로운 이클립스 버전이 설치된 과정이 요약된 로그입니다.
Conclusion
이후로는 이클립스 본체를 새로 설치할 때마다 부가 플러그인을 매번 다시 설치할 필요가 없습니다. 압축 풀고 Extension 추가하고 기존 워크스페이스 열면 전과 똑같은 환경을 사용할 수 있을 것입니다. 아예 처음 설치할 때부터 별도의 Extension 디렉토리를 만들어두고 설치하면 좋겠지만.. Software Updates에서 외부 Extension에 설치하도록 하는 방법은 아직 못찾았습니다. 바로 Extension 디렉토리에 설치하는 방법도 찾았습니다. 다운로드를 시작하기 직전의 Install 대화창에서 Change Location…이 있네요.
Extension 디렉토리에 설치된 플러그인/피처에 대한 업데이트는 아직 테스트해보지 않았지만 잘 될 것으로 생각됩니다. 만약의 경우를 대비하여 남겨둔 .eclipseproduct.bak가 있으니 추가 플러그인을 설치하거나 할 때는 .eclipseproduct를 복원하여 해당 이클립스에서 플러그인들을 추가 설치할 수도 있습니다.
여러 이클립스 버전을 사용하거나 구성 상의 문제로 이클립스를 여러곳에 설치하는 분이라면 더욱 유용하게 활용할 수 있을 것으로 생각됩니다. 기본적인 사용법을 예로 들었지만 활용방법은 더욱 많을 것입니다. 예를 들면 버전 별 또는 관련 작업에 따라 Product Extension을 만들어 두고 팀끼리 공유하면서 그때그때 골라쓰는 방법 등이 있을 듯 합니다. 더 유용한 사용법을 찾으신 분은 꼭 공유해주세요.
References
1년 전에도 관련 자료 링크를 블로그에 올렸었는데 그때는 그냥 저런 것도 있구나 했다가.. 막상 절실히 필요해지니 이제서야 제대로 써봤네요. 생각했던 것처럼 Tikal같은 멋진 업데이트 관리자가 나오긴 했으나, 마일스톤 버전을 써야하니 다 소용없습니다. 그리고 왠지 지우고 까는 거에도 너무 익숙해져 버린 느낌입니다. 더 자세한 내용은 관련 링크 참고하세요. eclipse extension이라는 검색어로는 extension point만 잔뜩 나와서 찾기가 쉽지 않습니다. ^^
-
플러그인 링크
Install Eclipse Plugins – The Easy Way을 참고하라. 기존 설치 방법의 장단점도 잘 설명하고 있다.
-
Eclipse Extension
배포판에 주로 쓰이는 기능이지만 직접 Eclipse Extension(확장형 배포판)을 만드는 것도 매우 쉬운 일이다. Managing Plugins in Eclipse을 참고하라.


