我尝试在我的 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 ://docs.sonatype.org/display/TYCHO/How+to+make+existing+OSGi+bundles+consumable+by+Tycho (见网络档案)
发布 P2 存储库
先决条件:
- 本地 Eclipse Galileo 安装在 %ECLIPSE_HOME% 我们想要为我们在文件系统中本地拥有的一堆 OSGi 包生成 P2 元数据。Eclipse为此任务提供了FeaturesAndBundlesPublisher 命令行应用程序。
- 首先,我们将所有 bundle jar 复制到 <BUNDLE_ROOT>/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 存储库,其中包含 <BUNDLE_ROOT>/repo 下的所有 OSGi 包。注意 repo 目录中生成的 P2 元数据文件 artifacts.jar 和 content.jar。
通过 HTTP 使新的 P2 存储库可用
<BUNDLE_ROOT>/repo 中的 P2 存储库是完整的,我们只需要通过 HTTP 使其可用,以便可以全局引用。
这可以使用任何 HTTP 服务器(例如 Apache)来完成。在我们的例子中,我们选择将它部署在 Tomcat 上,因为我们已经有一个 tomcat 用于其他目的,例如 Hudson 等。
在运行tomcat的主机上,将<BUNDLE_ROOT>/repo的内容复制到<TOMCAT_HOME>/webapps/<YOUR_REPO_DIR>
从现在开始,您可以在 pom.xml 中将这个 P2 存储库引用为
<repository> <id>tomcat-p2</id> <layout>p2</layout> <url>http://<TOMCAT_HOST>:<TOMCAT_PORT>/<YOUR_REPO_DIR></url> </repository>
如果我将生成的文件放在 Web 服务器上,则 Eclipse 不会将其识别为“软件站点”。
如何在不使用 Eclipse UI 的情况下从现有的 osgi 包创建 p2 软件站点,该过程必须在我的构建服务器的后台运行。
有没有办法使用 Maven (Tycho)/Gradle 从现有的 osgi 包中自动创建 p2 更新站点?