8

我已经关注了http://www.eclipse.org/equinox/documents/quickstart-framework.php但它似乎很旧并且无效。

没有描述 org.eclipse.update.configurator_3.2.100.jar 这样的包

我尝试使用 org.eclipse.equinox.simpleconfigurator_1.0.200.v20100503,但不起作用。

任何人都可以告诉我如何让 Equinox 自动加载插件文件夹中的包?

4

3 回答 3

14

最简单的方法是使用Apache Felix File Install。它适用于 Equinox,您只需将文件安装配置参数放入 configuration/config.ini。请注意,如果您通过启动器 JAR 或二进制启动 Equinox,则工作目录将是 configuration/ 或 plugins/ 目录的父目录。

摘自我们的项目 config.ini:

# Start File Install itself
osgi.bundles=reference\:file\:org.apache.felix.fileinstall_3.1.0.jar@1\: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

其他可能的解决方案是使用Eclipse P2。它更加先进和强大,尽管我觉得它很难使用。

好消息是,如果您的应用程序不知道提供捆绑包的方式(应该是这种方式),您以后随时可以改变主意。

于 2011-03-02T18:40:08.940 回答
0

In your eclipse installation folder you have the file bundles.info, for example:

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

You can modify the file to add any bundle you want, and also the start level. But the simplest method of adding bundles to an eclipse installation is to add them to the "dropins" folder. This will lead to an automatic modification of the bundle.info file.

于 2011-03-03T13:53:30.657 回答
0

这是我用 ant 编写的自动 eclipse 安装程序的片段。

这将安装来自自定义更新站点的所有功能。代码是“原样”的,但我肯定希望在编写它时有这样的东西来指导我。

该脚本还使用antcontrib对 ant 的扩展。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>

PS 由于它的实用性和复杂性,Eclipse P2 无疑是最不被记录的特性之一。

于 2011-03-02T18:42:50.923 回答