Eclipse Fragment 프로젝트는 기존에 존재하는 plugin 에 대한 패치나 번들처리등에 이용이 된다.


 하지만 기존에 존재하는 eclipse core framework 의 일부 jar 나 plugin 에 대해서 fragment 가 제대로 동작 하지 않는 경우가 있다.

 이에 대한 해결방법에 대해 알아보자.

 아래부터는 원본 jar 나 plugin 을 Host Plugin 이라 지칭하고, fragment plugin 을 Patch plugin 이라 지칭


  • Host Plugin Setting
    • plugin.xml 설정
      • Overview
        • version 이 중복되지 않도록 "_patch" 등의 이름으로 수정
      • Runtime > Classpath
        • patch.jar 라는 이름을 추가하고, patch.jar 가 "." 위로 오도록 순서수정
      • Build > Runtime Information
        • patch.jar 가 있다면 삭제하고 "." 만 나오게 수정
        • Folder 는 src/ 가 나오게 수정
      • MANIFEST.MF
        • Eclipse-ExtensibleAPI: true 를 기술
        • MANIFEST.MF 파일 예제
          • Bundle-Version: 1.3.1.v201401291437_patch
            ...skip...
            Eclipse-ExtensibleAPI: true
            Bundle-ClassPath: patch.jar, 

             . 

    • build.properties 파일 예제
      •  jars.compile.order = .

        bin.includes = .,\
                       META-INF/,\
                       plugin.properties,\
                       plugin.xml,\
                       default.properties,\
                       .options
        javacSource=1.5
        javacTarget=1.5
        source.. = src/
        output.. = bin/


  • Patch Plugin Setting
    • MANIFEST.MF 
      • Overview
        • Host Plug-in 선택 
      • Runtime > Classpath
        • patch.jar 라는 이름을 추가하고, patch.jar 가 "." 위로 오도록 순서수정
      • Build > Runtime Information
        • patch.jar 가 있다면 삭제하고 "." 만 나오게 수정
        • Folder 는 src/ 가 나오게 수정
      • MANIFEST.MF
        • Eclipse-PatchFragment: true 를 기술
        • MANIFEST.MF 파일 예제
          • Eclipse-PatchFragment: true

            Bundle-ClassPath: patch.jar,
             .

      • build.properties 파일 예제
        • bin.includes = META-INF/,\

          patch.jar

          jars.compile.order = patch.jar

          source.patch.jar = src/

  • Feature 프로젝트에 Patch Plugin 이 포함된 Feature Dependency 기술
    • a.plugin 을 패치한다면 해당 plugin 에 버전이 xxx_patch 등으로 바뀌었을것이다.
    • 이후 a.plugin 을 포함하고있는 abc.feature plugin 에 해당 내용을 수정해야되는데 수정하는 방법은 2가지가 있다.
      • abc.feature plugin 을 통째로 include 하는법
      • abc.feature pulgin 에 기술된 plugin 들을 전부 include 하는법
    • 위의 내용을 feature 프로젝트를 하나 생성하여 plugin.xml 에 Feature 혹은 Plugin 탭에서 기술한다.  
    • Eclipse Framework 환경에서 Dependecy 확인하는법 
      • ../eclipse/feature 폴더로 이동
      • 다음 명령어 수행
        • $ grep -r pluginName .



Posted by leechwin