如何从现有的osgi包创建p2存储库?

时间:2013-08-16 13:40:28

标签: eclipse maven eclipse-rcp tycho p2

我尝试在我的Eclipe-RCP应用程序中使用我的遗留代码。我把所有旧的maven项目都带有依赖项,并使用maven-bundle-plugin创建一个osgi包。

现在我把所有东西都包裹在一个新的osgi jar中。

如何从这个osgi jar创建一个p2更新站点,以便与tycho和eclipse目标平台一起使用?

我试过了:https://docs.sonatype.org/display/TYCHO/How+to+make+existing+OSGi+bundles+consumable+by+Tycho

如果我将生成的文件放在Web服务器上,eclipse不会将其识别为“软件站点”。

如何在不使用Eclipse UI的情况下从现有osgi包创建p2软件站点,该过程必须在我的构建服务器上在后台运行。

有没有办法使用Maven(Tycho)/ Gradle从现有的osgi包中自动创建p2更新站点?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您也可以将这些OSGi包(和maven源附件)放到我正在处理的开源OSGi存储库Package Drone

它允许您从Maven Tycho,普通Maven或手动部署或手动上载OSGi工件,并让它从中创建OSGi元数据。它还允许使用P2访问此存储库,因此可以从Eclipse PDE或Maven Tycho中使用它。

答案 2 :(得分:0)

使用此方法,由于缺乏属性,p2-repository的内容不可见。将p2.inf添加到包含以下内容的META-INF:  properties.0.name = org.eclipse.equinox.p2.type.group  properties.0.value = true

然后生成的content.xml包含此属性,IUGroupQuery返回此单元。