Plug-in Development Environment

Plug-in Development Environment(이하 PDE)는 그 자신이 플러그인이면서 플러그인을 개발하는 환경을 제공한다. 우리가 일반적으로 다운받는 Eclipse SDK에 기본적으로 포함되어 있다. 이는 플러그인 개발의 편의를 도모하기 위해 플러그인의 정보를 담고 있는 plugin.xml을 효과적으로 편집할 수 있는 플러그인 설명서 편집기와 개발 중인 플러그인를 실행하고 디버깅할 수 있는 환경을 제공한다.


위의 그림은 여러 페이지로 구성되어 있는 플러그인 설명서 편집기이며 plugin.xml 파일을 쉽게 편집할 수 있도록 도와주는 역할을 한다. 이클립스 3.0에서 개발을 시작하였고 현재는 3.2 버전을 사용하고 있는데 플러그인의 구조가 적잖이 변경되었다. 이전에는 대부분의 정보가 plugin.xml에 저장되었던 것에 반하여 3.2 버전에서는 일부정보가 MANIFEST.MF 파일에 저장된다. 따라서 3.2 버전에서의 plugin.xml은 확장점과 확장에 관한 내용만 담고 있다.

각각의 페이지에 대해서 간략히 설명하자면,

Overview – 플러그인의 ID, 이름, 버전, 제작자등의 정보
Dependencies – 플러그인이 의존하고 있는 다른 플러그인의 집합
Runtime – 런타임에 client에게 export할 package의 집합
Extenstion – 확장정의
Extension Points – 확장점정의
Build – 빌드할때 포함해야할 파일등 플러그인 빌드 관련 설정
MANIFEST.MF – MANIFEST.MF 파일 텍스트 편집기
plugin.xml – plugin.xml 파일 텍스트 편집기
build.properties – build.properties 파일 텍스트 편집기  

정리하자면,

Overview, Dependencies, Runtime 페이지를 수정하면 MANIFEST.MF 파일이, Extenstion, Extenstion Points 페이지를 수정하면 plugin.xml 파일이, Build 페이지를 수정하면 build.properties 파일이 수정된다. 텍스트 편집기에서 파일을 직접 수정한 내용도 각 페이지의 폼에 바로 적용되어 상호보완적으로 편집할 수 있다.

플러그인의 실행을 이해하기 위해서는 host 워크벤치와 runtime 워크벤치의 개념을 이해해야한다. 먼저 host 워크벤치는 현재 PDE를 이용해 플러그인을 개발하고 있는 워크벤치를 의미한다. host 워크벤치에서 개발 중인 플러그인의 Run을 구성해 실행시키면 쉽게 말해서 이클립스가 하나 더 뜬다! 이 것이 바로 runtime 워크벤치다.


위의 그림에서는 PDE에서 vicode 플러그인의 Run을 구성하고 있다. 여기서 Plug-ins 탭으로 들어가보면 host 워크벤치와 runtime 워크벤치의 개념을 이해할 수 있다. 여기서 선택된 것은 runtime 워크벤치를 실행할 때 포함하는 플러그인을 의미한다. 다시 말하면 runtime 워크벤치는 host 워크벤치에 포함된 플러그인에 더하여 현재 개발 중인 플러그인을 추가한 워크벤치를 의미한다. (물론 개발하는 플러그인과 의존관계가 없는 플러그인은 제외하고 수행해도 무방하다)  

개념을 잡는 것에 도움을 드리기 위해 씌여지고 있는 글이기 때문에 실제 PDE를 사용하는 예제를 수행해보고 싶으신 분은 이클립스 메뉴의 Help > Help Contents를 클릭하시고 나오는 메뉴얼에서 Platform Plug-in Developer Guide > Simple plug-in example을 참조하시기 바랍니다.

“Plug-in Development Environment”에 대한 12개의 생각

  1. 구글링하다 들립니다.^^;

    만드신 VICODE 프로그램도 이런 플러긴들의 조합이라고 보면 되는건가요?

    저도 VICODE와 흡사한 어플리케이션을 만들어보려고 하는데, 쉽게 감이 안잡히네요.

    JFace, SWT 등을 이용해 만든 plugin묶음이다라고 봐도 되나요?^^;

    1. 하나의 플러그인이 여러 확장점에 대한 구현을 포함하고 있어요. 확장점에 대한 개념부터 잡으시면 좋을 것 같아요. 예를 들어 VICODE는 에디터에 대한 확장점, 마법사에 대한 확장점, 액션에 대한 확장점등에 대해서 기능을 추가합니다. 확장점을 구현하다 보면 UI를 작성할 때 JFace와 SWT등을 사용하게 되죠.

  2. 지금 플러그인 하나 디버깅 중인데 말이야.

    저 위에 있는 창에서 Run이나 Debug로 실행하면 플러그인이 제대로 동작하는데,

    jar 파일로 묶은 다음에는 제대로 동작을 안하네..

    혹시 플러그인 만들면서 그런적없었어?

  3. 음..소스도 같이 포함시켰는데..

    특정 클래스를 동적으로 로드하는 동안에 ClassNotFoundException이 뜨네.

    클래스 패스는 . 으로 지정하고 .jar 안에 같이 다 묶어뒀는데도

    왜 파일을 못 찾지??

    1. 클래스패스 다시확인해봐. 이클립스 플러그인 문제라기 보다 일반적인 클래스패스문제 같은데. ClassNotFoundException이 뜨는 경우가 대부분 그렇지.

  4. 안녕하세요. 구굴링중 들립니다.

    eclipse 3.3 버전으로 특정 개발환경을 구현하려고 plugin 을 개발하려고 합니다. python 과 c, c++ , java 등으로 개발됩니다.
    메뉴에서 file-new 하면 test project 명이 나오고 개발환경이 자동으로 갖춰지고(라이브러리세팅,패스설정등, 컴파일러 설정)이 자동으로 처리 되었으면 합니다. 혹시 이에대한 커멘트를 해주시면 감사하겠습니다.

    1. 일단은 전체적으로 한번 공부를 하셔야 할 것 같아요. 라이브러리 세팅, 패스 설정 같은 환경 설정 내용은 Preference 쪽을 공부하시면 될 것 같구요. 특정 프로젝트 유형에 대한 환경 설정 내용을 저장할 수 있고, 또 설정가능하도록 UI를 제공할 수 있습니다.

  5. Eclipse 때문에 여기 저기 다니며 정보를 모으고 있었습니다. 잘 정리 된곳이 없어서 이해가 잘되지 않았는데 많은 도움을 여기서 받네요. 그래서 이말씀 드려야 할것 같아서요 감사합니다.

준영 에 응답 남기기응답 취소