Как сделать подключаемый модуль Eclipse развертываемым во многих версиях Eclipse? - PullRequest
1 голос
/ 04 февраля 2020

Я написал свой собственный плагин Eclipse для Eclipse Oxygen 3a. Он отлично работает в Eclipse Oxygen 3a.

Теперь мне необходимо развернуть тот же плагин в новых версиях Eclipse, но когда плагин устанавливается, например, в Eclipse Photon, окно установки говорит:

Cannot perform operation. Computing alternate solutions, may take a while: ...

Это действительно занимает много времени и заканчивается тем, что мой плагин не будет установлен.

Что нужно сделать, чтобы этот плагин работал более чем в одну версию Eclipse?

Обновление 1

По запросу, это Require-Bundle:

Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.jface.text,
 org.eclipse.core.resources,
 org.eclipse.ui.editors,
 org.eclipse.ui.views;bundle-version="3.8.0",
 org.eclipse.ui.ide,
 org.eclipse.jdt.ui;bundle-version="3.13.52",
 org.eclipse.jdt.core;bundle-version="3.13.50"

Нет Import-Bundle.

Обновление 2

Функция. xml Файл можно увидеть ниже. У меня есть плагин, развернутый на внутреннем веб-сервере Apache, и я использую опцию «Установить новое программное обеспечение» в меню «Справка» Eclipse для установки из него.

<?xml version="1.0" encoding="UTF-8"?>
<feature
      id="MyPluginFeature"
      label="MyPlugin"
      version="0.4.0"
      provider-name="MyPlugin.com"
      plugin="MyPlugin">

   <description url="http://www.example.com/description">
   </description>

   <copyright url="http://www.example.com/copyright">
   </copyright>

   <license url="http://www.example.com/license">
   </license>

   <url>
      <update label="MyPlugin site" url="http://acme.com/myplugin"/>
   </url>

   <requires>
      <import plugin="org.eclipse.core.expressions" version="3.2.0" match="compatible"/>
      <import plugin="org.eclipse.core.filesystem" version="1.3.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.12.0" match="compatible"/>
      <import plugin="org.eclipse.core.resources" version="3.12.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.13.0" match="compatible"/>
      <import plugin="org.eclipse.core.filesystem" version="1.7.0" match="compatible"/>
      <import plugin="org.eclipse.text" version="3.6.0" match="compatible"/>
      <import plugin="org.eclipse.osgi" version="3.7.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.common" version="3.8.0" match="compatible"/>
      <import plugin="org.eclipse.core.jobs" version="3.2.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.registry" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.preferences" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.core.contenttype" version="3.3.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.app" version="1.0.0" match="greaterOrEqual"/>
      <import plugin="org.eclipse.equinox.common" version="3.2.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.registry" version="3.2.0" match="compatible"/>
      <import plugin="org.eclipse.osgi" version="3.2.0" match="compatible"/>
      <import plugin="org.eclipse.core.commands" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.common" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.2.0" match="compatible"/>
      <import plugin="org.eclipse.swt" version="3.103.0" match="compatible"/>
      <import plugin="org.eclipse.jface" version="3.13.0" match="compatible"/>
      <import plugin="org.eclipse.ui.workbench" version="3.105.0" match="compatible"/>
      <import plugin="org.eclipse.core.expressions" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.swt" version="3.104.0" match="compatible"/>
      <import plugin="org.eclipse.core.commands" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.equinox.common" version="3.3.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.compare.core" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.core.expressions" version="3.4.100" match="compatible"/>
      <import plugin="org.eclipse.jface.text" version="3.8.0" match="compatible"/>
      <import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.11.0" match="compatible"/>
      <import plugin="org.eclipse.core.filesystem" version="1.2.0" match="compatible"/>
      <import plugin="org.eclipse.core.filebuffers" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.core.resources" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.text" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.ltk.core.refactoring" version="3.7.0" match="compatible"/>
      <import plugin="org.eclipse.jface.text" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.ui.navigator" version="3.3.200" match="compatible"/>
      <import plugin="org.eclipse.compare" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.team.core" version="3.4.100" match="compatible"/>
      <import plugin="org.eclipse.team.ui" version="3.4.100" match="compatible"/>
      <import plugin="org.eclipse.ui.editors"/>
      <import plugin="org.eclipse.ui.views" version="3.8.0" match="greaterOrEqual"/>
      <import plugin="org.eclipse.ui.ide"/>
      <import plugin="org.eclipse.jdt.ui" version="3.13.52" match="greaterOrEqual"/>
      <import plugin="org.eclipse.jdt.core" version="3.13.50" match="greaterOrEqual"/>
   </requires>

   <plugin
         id="org.eclipse.core.resources"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.jdt.core"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.runtime"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.core.filesystem"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.text"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.equinox.common"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.jface"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.ui.workbench.texteditor"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.ltk.core.refactoring"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.eclipse.ltk.ui.refactoring"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="MetaCoder"
         download-size="0"
         install-size="0"
         version="0.4.0"
         unpack="false"/>

</feature>

Обновление 3

Окно исправления: enter image description here

Обновление 4

После неудачной попытки установить плагин в Eclipse JEE 2019-Jul у меня появилось следующее сообщение об ошибке:

Cannot complete the install because of a conflicting dependency.
  Software being installed: MyPlugin 0.4.0 (MyPluginFeature.feature.group 0.4.0)
  Software currently installed: Eclipse Platform 4.13.0.v20190916-1323 (org.eclipse.platform.feature.group 4.13.0.v20190916-1323)
  Only one of the following can be installed at once: 
    Core File Systems 1.7.500.v20190620-1312 (org.eclipse.core.filesystem 1.7.500.v20190620-1312)
    Core File Systems 1.7.0.v20170406-1337 (org.eclipse.core.filesystem 1.7.0.v20170406-1337)
    Core File Systems 1.7.400.v20190518-1151 (org.eclipse.core.filesystem 1.7.400.v20190518-1151)
  Cannot satisfy dependency:
    From: MyPlugin 0.4.0 (MetaCoderFeature.feature.group 0.4.0)
    To: org.eclipse.equinox.p2.iu; org.eclipse.core.filesystem [1.7.0.v20170406-1337,1.7.0.v20170406-1337]
  Cannot satisfy dependency:
    From: Eclipse Platform 4.13.0.v20190916-1323 (org.eclipse.platform.feature.group 4.13.0.v20190916-1323)
    To: org.eclipse.equinox.p2.iu; org.eclipse.core.filesystem [1.7.500.v20190620-1312,1.7.500.v20190620-1312]

Обновление 5

В редакторе функций я решил нажать кнопку [Compute], и ​​все зависимости были пересчитаны. В результате ниже у нас появилась новая функция. xml file:

<?xml version="1.0" encoding="UTF-8"?>
<feature
      id="MyPluginFeature"
      label="MyPlugin"
      version="0.4.0"
      provider-name="ACME"
      plugin="MyPlugin">

   <description url="http://www.example.com/description">
   </description>

   <copyright url="http://www.example.com/copyright">
   </copyright>

   <license url="http://www.example.com/license">
   </license>

   <url>
      <update label="Site do MyPlugin" url="http://example.org/myplugin"/>
   </url>

   <requires>
      <import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.12.0" match="compatible"/>
      <import plugin="org.eclipse.jface.text" version="3.8.0" match="compatible"/>
      <import plugin="org.eclipse.core.resources" version="3.12.0" match="compatible"/>
      <import plugin="org.eclipse.ui.editors"/>
      <import plugin="org.eclipse.ui.views" version="3.8.0" match="greaterOrEqual"/>
      <import plugin="org.eclipse.ui.ide"/>
      <import plugin="org.eclipse.jdt.ui" version="3.13.52" match="greaterOrEqual"/>
      <import plugin="org.eclipse.jdt.core" version="3.13.50" match="greaterOrEqual"/>
   </requires>

   <plugin
         id="MyPlugin"
         download-size="0"
         install-size="0"
         version="0.4.0"
         unpack="false"/>

</feature>

1 Ответ

2 голосов
/ 05 февраля 2020

В feature.xml только ваши собственные подключаемые модули должны быть указаны как <plugin ... />, а не требуемые подключаемые модули / связки (Eclipse).

Например,

    <plugin
         id="org.eclipse.core.resources"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

делает плагин / комплект org.eclipse.core.resources текущей версии (version="0.0.0" - это заполнитель, который будет заменен текущей версией при создании сайта обновления) частью вещи, которая может быть установленным Поскольку org.eclipse.core.resources представляет собой одноэлементный плагин / комплект (Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true), его нельзя использовать с плагином / комплектом другой версии. Это предотвращает развертывание вашего плагина во многих версиях Eclipse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...