2011-03-02 1 views
7

나는 http://www.eclipse.org/equinox/documents/quickstart-framework.php을 추적했지만 올바르지 않은 것으로 보입니다.Eclipse Equinox, 플러그인 폴더에 번들 자동로드를 구성하는 방법

내가 org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503과 노력

org.eclipse.update.configurator_3.2.100.jar 설명하지만, 작동하지 않는 그런 번들이 없습니다.

누구나 plugins 폴더에 Equinox 자동 번들을로드하는 방법을 알려 줄 수 있습니까?

답변

12

가장 간단한 방법은 Apache Felix File Install입니다. 그것은 Equinox와 잘 동작하며, File Install 구성 매개 변수를 configuration/config.ini에 넣기 만하면됩니다. Launcher JAR 또는 바이너리를 통해 Equinox를 시작하면 작업 디렉토리는 configuration/또는 plugins/디렉토리의 부모가됩니다. 우리의 프로젝트의 config.ini에서

발췌 : Eclipse P2를 사용하는

# Start File Install itself 
osgi.bundles=reference\:file\:[email protected]\:start 
# The name of the directory to watch 
felix.fileinstall.dir=./plugins 
# A regular expression to be used to filter file names 
# We have all bundles in plugins/ directory, this regexp 
# forbids monitoring bundles that are started via osgi.bundles property 
felix.fileinstall.filter=^(?!org.apache.felix.fileinstall|org.eclipse.osgi).* 
# Determines if File Install waits felix.fileinstall.poll milliseconds before doing an initial scan or not. 
felix.fileinstall.noInitialDelay=true 
# Not sure why we have this... 
felix.fileinstall.start.level=2 

다른 가능한 솔루션이 될 것입니다. 그것은 훨씬 더 진보적이고 강력합니다. 그러나 사용하기가 매우 어렵습니다.

좋은 점은 응용 프로그램이 번들이 프로비저닝되는 방식에 대해 불가지론적인 경우 (그리고 이런 방식이어야 함) 나중에 언제든지 마음을 바꿀 수 있다는 것입니다.

+0

Apache Felix File Install을 사용하고 싶지만 Eclipse config.ini에 "felix.fileinstall.dir"구성을 어떻게 넣을 수 있습니까? 나는 felix.fileinstall.dir = .. \ plugins \을 성공하지 않고 시도했다 ... 어떻게이 시스템 속성을 설정 파일에 넣을 수 있습니까? –

+1

시스템 속성에 대한 jvm 매개 변수와 함께 파일 설치를 사용 중입니다. 그것은 마치 --Dparemter = value .. 이제 작동 중입니다. –

+0

felix.fileinstall.dir =./plugins를 사용해 보셨습니까? 런처 jar/binary를 통해 Equinox를 시작하면 작업 디렉토리는 구성/디렉토리의 부모가됩니다. 게다가, 잘 작동해야합니다. –

0

개미로 작성된 이클립스 설치 프로그램의 일부분입니다.

사용자 지정 업데이트 사이트의 모든 기능을 설치합니다. 코드는 '있는 그대로'이지만 필자는 필자가이 글을 쓸 때 이것을 안내해 줄 수있는 것이 분명했을 것입니다.

이 스크립트는 개미에 antcontrib 확장을 사용합니다. Antcontrib 작업에는 'ac :'네임 스페이스 접두사가 있습니다.

희망이 있습니다.

<property name="real.eclipse.home" location="${eclipse.home}/eclipse"/> 

    <property file="${real.eclipse.home}/configuration/config.ini" prefix="ECLIPSE_CONFIG"/> 

    <property name="eclipse-plugins.dir" location="${real.eclipse.home}/plugins"/> 

    <path id="newest.equinox.launcher-library.path.id"> 
     <dirset dir="${eclipse-plugins.dir}"> 
     <include name="org.eclipse.equinox.launcher.*"/> 
     </dirset> 
    </path> 

    <property name="equinox.launcher-library.full-path" refid="newest.equinox.launcher-library.path.id"/> 

    <basename property="equinox.launcher-library.dir" file="${equinox.launcher-library.full-path}"/> 

    <echo message="equinox.launcher-library.dir='${equinox.launcher-library.dir}'"/> 

    <path id="newest.equinox.launcher.path.id"> 
     <fileset dir="${eclipse-plugins.dir}"> 
     <include name="org.eclipse.equinox.launcher_*.jar"/> 
     </fileset> 
    </path> 

    <property name="equinox.launcher.jar" refid="newest.equinox.launcher.path.id"/> 
    <basename property="equinox.launcher.jar.basename" file="${equinox.launcher.jar}"/> 

    <echo message="equinox.launcher.jar='${equinox.launcher.jar}'"/> 

    <java jar="${equinox.launcher.jar}" 
     fork="true" 
     failonerror="true" 
    > 
     <arg value="-consolelog"/> 
     <arg value="-application"/> 
     <arg value="org.eclipse.equinox.p2.director"/> 
     <arg value="-repository"/> 
     <arg value="http://${repository.server}/custom-update-site"/> 
     <arg value="-list"/> 
     <redirector 
     logError="true" 
     outputproperty="features.list" 
     > 
     <outputfilterchain> 
      <linecontains> 
      <contains value="feature.group="/> 
      </linecontains> 
      <replaceregex pattern="(.*feature\.group)=.*$" replace="\1"/> 
     </outputfilterchain> 
     </redirector> 
    </java> 

    <ac:for list="${features.list}" delimiter="${line.separator}" trim="true" param="feature"> 
     <sequential> 
     <ac:if> 
      <isset property="feature.comma.list"/> 
      <then> 
      <ac:var name="feature.comma.list" value="${feature.comma.list},@{feature}"/> 
      </then> 
      <else> 
      <property name="feature.comma.list" value="@{feature}"/> 
      </else> 
     </ac:if> 
     </sequential> 
    </ac:for> 

    <echo message="Found following features to install"/> 
    <echo message="${features.list}"/> 

    <java jar="${equinox.launcher.jar}" 
     fork="true" 
     failonerror="true" 
    > 
     <arg value="-consolelog"/> 
     <arg value="-application"/> 
     <arg value="org.eclipse.equinox.p2.director"/> 
     <arg value="-repository"/> 
     <arg value="http://${repository.server}/custom-update-site"/> 
     <arg value="-destination"/> 
     <arg file="${real.eclipse.home}"/> 
     <arg value="-installIU"/> 
     <arg value="${feature.comma.list}"/> 
     <arg value="-profile"/> 
     <arg value="${ECLIPSE_CONFIG.eclipse.p2.profile}"/> 
    </java> 

P. 유용성과 복잡성 때문에 이클립스 P2는 분명히 가장 저평가 된 기능 중 하나입니다. 이클립스 설치 폴더에서

0

당신은 예를 들어, 파일 bundles.info 있습니다

eclipse-3.6.1/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info 

당신은 당신이 원하는 번들, 또한 시작 레벨을 추가 할 파일을 수정할 수 있습니다. 그러나 번들을 Eclipse 설치에 추가하는 가장 간단한 방법은 "dropins"폴더에 번들을 추가하는 것입니다. 그러면 bundle.info 파일이 자동으로 수정됩니다.

+0

hmmm ... "droppins"폴더는 어디에 있습니까? 춘분은 bundles.info를 런타임시 자동으로 변경합니다. –

+1

eclipse-3.6.1 /에서는 플러그인 및 기능과 동일한 수준입니다. 그리고 춘분 (equinox)이 자동으로 그렇게 할 것입니다. 여기에 몇 가지 추가 정보가 있습니다. [link] (http://wiki.eclipse.org/Equinox_p2_Getting_Started#Dropins). 메커니즘은 felix 설치가하는 것과 비슷하지만 "일식"입니다. – RaduK

+0

일반 Equinox 설치에서는 작동하지 않습니다. dropins 디렉토리의 JAR 파일은 자동으로로드되지 않습니다. – Robert