【发布时间】:2013-08-18 22:38:56
【问题描述】:
我尝试在我的 Ecipe-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 archive)
发布 P2 存储库
先决条件:
- 在 %ECLIPSE_HOME% 中安装本地 Eclipse Galileo 我们想为我们在文件系统中本地拥有的一堆 OSGi 包生成 P2 元数据。 Eclipse 为此任务提供了FeaturesAndBundlesPublisher command line application。
- 首先,我们将所有 bundle jar 复制到
/plugins 目录中 - 然后我们执行
%ECLIPSE_HOME%\eclipsec.exe -debug -consolelog -nosplash -verbose -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/<BUNDLE_ROOT>/repo -artifactRepository file:<BUNDLE_ROOT>/repo -source <BUNDLE_ROOT> -compress -publishArtifacts
- 结果是一个 P2 存储库,其中包含
/repo 下的所有 OSGi 包。注意 repo 目录中生成的 P2 元数据文件 artifacts.jar 和 content.jar。 通过 HTTP 使新的 P2 存储库可用
/repo 中的 P2 存储库已经完成,我们只需通过 HTTP 使其可用,以便全局引用。 这可以使用任何 HTTP 服务器(例如 Apache)来完成。在我们的例子中,我们选择将它部署在 Tomcat 上,因为我们已经有一个 Tomcat 用于其他目的,例如 Hudson 等。
在运行tomcat的主机上,将
/repo的内容复制到 /webapps/ 从现在开始,您可以在 pom.xml 中引用这个 P2 存储库
<repository> <id>tomcat-p2</id> <layout>p2</layout> <url>http://<TOMCAT_HOST>:<TOMCAT_PORT>/<YOUR_REPO_DIR></url> </repository>
如果我将生成的文件放在网络服务器上,eclipse 不会将其识别为“软件站点”。
如何在不使用 Eclipse UI 的情况下从现有的 osgi 包创建 p2 软件站点,该过程必须在我的构建服务器的后台运行。
有没有办法使用 Maven (Tycho)/Gradle 从现有的 osgi 包自动创建 p2 更新站点?
【问题讨论】:
标签: eclipse maven eclipse-rcp tycho p2