본문 바로가기

개발환경/이클립스

RCP 개발시 설치되지 않은 플러그인 추가하기

RCP를 개발할 때 설치되지 않은 플러그인이나 프라그먼트를 배포할 때 포함시켜야 할때가 있다. 예를 들면 개발하고 있는 OS와 다른 OS환경으로 배포해야 하거나 배포 국가에 따라 다국어를 지원해야 하는 경우를 들 수 있다. 물론 모든 플러그인이나 프라그먼트를 포함하여 배포할 수도 있으나 비효율적이다. 설치하는 사람의 입장에서 필요하지 않은 플러그인을 설치하는 것이기 때문이다.

이렇게 배포환경에 따라 설치되지 않은 플러그인이나 프라그먼트를 포함하여 배포할 수 있는 방법은 없을까?

방법은 OS환경의 경우 DeltaPack을 이용하고 다국어의 경우 LanguagePack을 이용하는 것이다.

이글에서는 LanguagePack을 예로 들어 설명한다.

사전준비:

Eclipse Babel Project

참고: http://www.eclipse.org/babel/downloads.php

이클립스 바벨 프로젝트는 NLS 즉, 다국어 지원을 위한 프로젝트이다.

위의 참고 URL에서 현재 가장 최신버전인 Babel Language Packs - 0.7.1에서 해당 이클립스 버전에 맞는 Zip 파일을 다운받는다.

...

Babel Language Packs - 0.7.1

Babel Language Pack Zips
Galileo | Ganymede | Europa
Installation instructions

...

나의 경우 Galileo를 선택했고 아래와 같이 한국어를 검색하여 이클립스 코어 부분만 다운받았다.

Language: Korean
...
BabelLanguagePack-eclipse-ko_3.5.0.v20091121043401.zip (92.82%)
...

다운받은 파일을 ${eclipse_home}/languagepack 에 압축을 해제한다. 디렉토리 구조는 아래와 같다.

languagepack

|-- eclipse

     |-- features

     |-- plugins


배포방법:

RCP를 빌드하는 방법은 크게 두가지가 있다. 이클립스를 이용하는 방법과 Headless Build 방법(이클립스를 사용하지 않고 Ant, Maven과 같은 빌드 스크립트를 이용)이 있다. 이글에서는 이클립스를 이용하여 빌드하고 배포하는 방법을 알아보도록 하고 Headless Build는 나중에 알아보도록 하자. 

Window -> Preferences -> Plug-in Development -> Target Platform 을 선택하고 아래 그림과 같이 Running Platform (Active)를 선택한다. 만약 선택할 대상이 없다면 Add... 버튼을 선택하여 기본으로 대상을 하나 생성하기 바란다.

아래 내용을 이해하고 있는 개발자의 경우 각 상황에 맞게 대상을 생성하도록 하고 그렇지 않는 경우는 기본으로만 생성하도록 한다. 잘못 생성하는 경우 클래스를 찾을 수 없다는 에러와 한참동안 씨름할 것이다.(^^ 이것 때문에 2시간을 고생했다는...)

 

Edit... 버튼을 선택하여 Edit Target Definition 창이 뜨면 Add... 버튼을 선택한다.

Add Content에서 Inatallation 을 선택하고 Next > 버튼을 선택한 다음  Location에

${eclipse_home}/languagepack/eclipse 과 같이 입력하고 Next > 버튼을 선택한다.

그러면 아래와 같이 현재 포함되어 있는 플러그인이나 프라그먼트의 목록을 보여주며 Finish 버튼을 선택하여 종료한다.

위와 같이 하면 Plug-ins 뷰에 방금 추가한 플러그인이나 플라그먼트가 보일 것이다. 만약 Plug-ins 뷰가 보이지 않는다면

Window -> Show View -> Other... -> Plugin Development -> Plug-ins 를 선택하고 확인한다.

이제 실제 이클립스에는 LanguagePack이 설치되어 있지 않지만 해당 플러그인들을 이용할 수 있다.

배포를 Plug-in 기반으로 하는 경우는 직접 해당 플러그인을 추가하면 되고 피처 기반으로 하는 경우는 해당 피처에 추가하거나 nls 피처를 만들어 추가하면 된다.

nls의 경우 거의 대부분이 프라그먼트이므로 관리의 편리상 nls 피처를 만들어 관리할 것을 권고한다.