我尝试在我的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更新站点?
答案 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返回此单元。