Создание плагина Eclipse с использованием Maven

Я пытаюсь настроить Maven для создания приложения Eclipse (плагин Eclipse, упакованный со всеми Eclipse EXE и т.д.).

Я уже определил несколько десятков зависимостей проекта и развернул их на нашем внутреннем сервере Nexus (OSS). Я также установил плагин Rexor Nexus P2 и плагин P2 Bridge (2.6.3-01) и плагин Nexus Unzip (0.12.0). Я могу перейти к папке .meta/p2 нашего репозитория групп, но в настоящее время пуст.

Это должно быть намного проще, чем кажется на данный момент. Я нацелен на Eclipse 3.4.2 (Ganymede) в Windows. Если это имеет какое-либо значение, мы фактически развертываем наше приложение, упакованное как урезанная/настроенная установка Eclipse.

затмение-хранилище

Когда я запускаю maven против pom с <packaging>eclipse-repository</packaging>, я получаю следующую ошибку:

[ERROR]   Missing requirement: MyApp 0.0.0 requires 
          'org.eclipse.equinox.executable.feature.group 0.0.0' 
          but it could not be found

... откуда мне это получить и как добавить его в Nexus?

Когда я запускаю maven против pom с <packaging>eclipse-plugin</packaging>, я получаю следующую ошибку:

[ERROR]   Missing requirement: MyApp 0.0.0 requires 
          'bundle org.eclipse.ui 0.0.0'
          but it could not be found

... но я нашел следующие каталоги в моей локальной файловой системе (подозрительный itp-04-rcp сгенерировал первый):

D:\maven\repository\p2\osgi\bundle\org.eclipse.ui\3.6.2.M20110203-1100
D:\maven\repository\p2\osgi\bundle\org.eclipse.ui\3.7.0.v20110928-1505

Tycho POM-Первые артефакты

Я также пробовал команды pom-first-dependencies и manifest-first-dependency: http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

Я не понимаю, как это работает - я могу построить itp02 из Git. Я вижу, что он создает два пакета:

+---------------------+---------------------+--------------------------------------+
| artifactId          | Bundle-Name         | Bundle-SymbolicName                  |
+---------------------+---------------------+--------------------------------------+
| pomfirst-bundle     | pomfirst-bundle     | tycho.demo.itp02.pomfirst-bundle     |
| pomfirst-thirdparty | pomfirst-thirdparty | tycho.demo.itp02.pomfirst-thirdparty |
+---------------------+---------------------+--------------------------------------+

... но как это сделать build02? Единственный бит, который кажется актуальным, это:

Import-Package: tycho.demo.itp02.pomfirst

... это не имеет никакого отношения ни к одному из Bundle-Names.

Плагин Felix Maven Bundle

Я попробовал Felix maven-bundle-plugin. Я включаю все мои регулярные зависимости maven в pom с <packaging>bundle</packaging>.

  • mvn deploy создает что-то в /nexus/content/repositories/snapshots/.meta/p2/plugins. Я могу загрузить банку через браузер, но все баны зависимости называются "artifact-vresion", а не "artifact_version" - это правильно?

  • mvn bundle:bundleall создает пакет OSGI для каждой из транзитивных зависимостей, но я не уверен, что с ними делать.

  • mvn bundle:deploy отказывается делать что-либо, если я не укажу -DremoteOBR и, возможно, несколько других параметров, которые я действительно не понимаю.

Ответ 1

"org.eclipse.equinox.executable.feature.groug", по-видимому, необходим, если вы создаете продукт eclipse, который включает в себя собственные средства запуска (свойство "включить laucher", равное true в конфигурации продукта). Попытайтесь добавить эту функцию в определение платформы (например, копию из реплики eclipse p2 или исполняемой среды Eclipse IDE).

См. также https://bugs.eclipse.org/bugs/show_bug.cgi?id=407272

С уважением, Paolo

Ответ 2

Чтобы решить проблему, связанную с отсутствующими зависимостями:

[ERROR]   Missing requirement: MyApp 0.0.0 requires 
          'bundle org.eclipse.ui 0.0.0'
          but it could not be found

кажется, что для вашего Feature/Plugin MyApp требуется загрузить плагин org.eclipse.ui, прежде чем он сможет быть установлен.

Вы должны проверить свои настройки из конфигурации-помпа следующим образом:

 <properties>
  <tycho.version>0.25.0</tycho.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <repository.url>http://download.eclipse.org/releases/neon</repository.url>
 </properties>

 <repositories>
  <repository>
   <id>NeonRepository</id>
   <url>${repository.url}</url>
   <layout>p2</layout>
  </repository>

если вы создали свой собственный репозиторий p2, убедитесь, что страница правильно построена. Вы можете проверить это, если вы выбрали (в eclipse) Справка → Установить новое программное обеспечение. Eclipse должен показывать предоставленные детали. Если ничего не отображается, даже если вы отключили каждый флажок, вы должны проверить свой p2-репозиторий. Он должен содержать "возможности и " плагинов ", а также artifacts.jar и content.jar. Если у вас есть только две папки, вы должны запустить

eclipse -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher
 -metadataRepository file:/<some location>/repository
 -artifactRepository file:/<some location>/repository
 -source /<location with a site.xml>
 -configs gtk.linux.x86
 -compress
 -publishArtifacts

в CLI/Shell. Для получения дополнительной информации проверьте документацию eclipse.

Ответ 3

Можете ли вы создать maven/tycho для создания целевой платформы, с помощью которой вы можете создавать свои исходные плагины? http://www.vogella.com/articles/EclipseTycho/article.html