Как создать репозиторий p2 из существующего пакета osgi?

я пытаюсь использовать свой устаревший код в своем приложении Eclipe-RCP. Я взял все свои старые проекты maven с зависимостями и использовал плагин maven-bundle-plugin для создания пакета osgi.

Теперь у меня все упаковано в новую банку osgi.

Как создать сайт обновления p2 из этой банки osgi для использования с tycho и целевой платформой eclipse?

Я пробовал: https://docs.sonatype.org/display/TYCHO/How+to+make+existing+OSGi+bundles+consumable+by+Tycho

Если я помещу полученные файлы на веб-сервер, eclipse не распознает его как «сайт программного обеспечения».

Как создать сайт программного обеспечения p2 из существующих пакетов osgi без использования пользовательского интерфейса Eclipse, процесс должен выполняться в фоновом режиме на моем сервере сборки.

Есть ли способ использовать Maven (Tycho)/Gradle для автоматического создания сайта обновления p2 из существующего пакета osgi?


person uti.devel    schedule 16.08.2013    source источник


Ответы (3)


Я всегда использую эти две команды для создания репозитория p2:

java -jar %ECLIPSE_HOME%\plugins\org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/C:/repository -artifactRepository file:/C:/destination -source /C:/source -configs gtk.linux.x86 -compress -publishArtifacts

где c:/source хранятся мои бандлы, а потом

%ECLIPSE_HOME%/eclipse -debug -consolelog -nosplash -verbose -application org.eclipse.equinox.p2.publisher.CategoryPublisher -metadataRepository file:C:/destination -categoryDefinition file:C:/source/category.xml

дерево C:/source такое

source
 -- feaures
 -- plugins
 -- category.xml

и вам понадобится этот category.xml файл, чтобы сгруппировать ваши пакеты по категориям. Это содержимое категории

<?xml version="1.0" encoding="UTF-8"?>
<site>
   <category-def name="all" label="P2 Repo"/>
   <iu>
      <category name="all"/>
      <query><expression type="match">providedCapabilities.exists(p | p.namespace == 'osgi.bundle')</expression></query>
   </iu>
</site>

в зависимости от вашей версии eclipse, возможно, вам потребуется изменить версию этого файла org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar

person Luiz E.    schedule 16.08.2013
comment
если использовать первую команду, будет создан каталог артефактов.jar, content.jar и плагинов с моими пакетами. если я использую вторую команду после первой, ничего не произойдет, если я удалю все в целевом каталоге, вторая команда сгенерирует content.xml, который не создан, я сначала использую первую команду? Я думаю, что я что-то пропустил? И как предотвратить закрытие окон, я ничего не могу прочитать? - person uti.devel; 16.08.2013
comment
да, это ваш репозиторий p2. eclipse откроется и прочитает файл content.jar. Вам нужно запустить обе команды и ничего больше. Вторая команда опубликует ваши артефакты. нет необходимости удалять все - person Luiz E.; 16.08.2013
comment
почему content.xml не создается, если присутствуют артефакты.jar, content.jar и каталог плагинов? Если я помещу каталог артефактов.jar, content.jar и плагинов с моими пакетами на свой веб-сервер, eclipse ничего не найдет :( - person uti.devel; 16.08.2013
comment
Вам не нужен content.xml - person Luiz E.; 16.08.2013
comment
У моего веб-сервера была какая-то проблема. Теперь он работает. Большое Вам спасибо :) - person uti.devel; 16.08.2013

Вы также можете поместить эти пакеты OSGi (и исходные файлы maven) в Package Drone, Репозиторий OSGi с открытым исходным кодом, над которым я сейчас работаю.

Он позволяет вам развертывать или вручную загружать артефакты OSGi из Maven Tycho, обычного Maven или вручную и создавать из них метаданные OSGi. Это также позволяет получить доступ к этому репозиторию с помощью P2, поэтому его можно использовать из Eclipse PDE или снова из Maven Tycho.

person ctron    schedule 06.01.2015
comment
Я знаю, что этот ответ устарел, но вы случайно не знаете, можно ли использовать пакетный дрон для создания p2-репозитория, состоящего из нескольких других p2-репозиториев (например, P2-репозитории Subclipse + JRebel + DBeaver, объединенные в один p2- репозиторий, который я могу вставить в артефакты)? - person Igor; 28.11.2019

При таком подходе содержимое p2-репозитория не становится видимым из-за отсутствия свойства. Добавьте p2.inf в META-INF, содержащий: properties.0.name = org.eclipse.equinox.p2.type.group properties.0.value = true

Затем сгенерированный файл content.xml содержит это свойство, и IUGroupQuery возвращает этот модуль.

person Matthias Nowak    schedule 11.03.2017