Eclipse Equinox, как настроить автоматическую загрузку пакетов в папку плагинов - PullRequest
8 голосов
/ 02 марта 2011

Я следовал 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 автоматически загружать пакеты внутри папки плагинов?

Ответы [ 3 ]

14 голосов
/ 02 марта 2011

Самый простой подход - использовать Установка Apache Felix File .Он отлично работает с Equinox, вам нужно только поместить параметры конфигурации File Install в файл configuration / config.ini.Обратите внимание, что если вы запустите Equinox через запускающий JAR или через двоичный файл, рабочий каталог будет родительским для каталога конфигурации / или 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 .Он гораздо более продвинутый и мощный, хотя я нахожу его довольно сложным в использовании.

Хорошо, что если ваше приложение не зависит от способа предоставления пакетов (и так должно быть), вы всегда можетепередумаете позже.

0 голосов
/ 03 марта 2011

В вашей папке установки eclipse у вас есть файл bundles.info, например:

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

Вы можете изменить файл, добавив любой желаемый пакет, а также начальный уровень. Но самый простой способ добавления пакетов в установку Eclipse - добавить их в папку «dropins». Это приведет к автоматической модификации файла bundle.info.

0 голосов
/ 02 марта 2011

Вот фрагмент из моего автоматического установщика 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, безусловно, является одной из наиболее недокументированных функций.

...