0

我有一个包:

<groupId>com.helloworld</groupId>
<artifactId>Helloworld</artifactId>
<version>1.0.0-SNAPSHOT</version>

以前,捆绑包和 OSGi 容器(FUSE ESB Enterprise)位于同一台机器上。我使用以下命令从本地 maven 存储库安装它:

FuseESB:karaf@root> install file:/home/li/.m2/repository/com/helloworld/Helloworld/1.0.0-SNAPSHOT/Helloworld-1.0.0-SNAPSHOT.jar

现在 bundle 和 OSGi 容器在不同的机器上:

捆绑在 IP 为 192.168.122.22 的机器上

如何远程安装此捆绑包?

4

2 回答 2

1

请注意,该install命令的参数是一个 URL。因此,您可以从具有可用 URL 处理程序的任何 URL 进行安装。例如:

install http://www.example.com/helloworld-1.0.jar

于 2013-05-04T17:32:10.357 回答
1

对于 Fuse ESB 或更通用的基于 Apache Karaf 的服务器,您有pax url mvn uri prefix。这允许从 mvn 存储库安装包。我建议始终使用此 uri 而不是文件一。在您的情况下,命令将是:

安装 mvn:com.helloworld/Helloworld/1.0.0-SNAPSHOT

这个 uri 甚至比基于文件的 uri 还要小一些。不过最大的优势是您可以使用完整的 mvn 分辨率。因此,上面的 url 将适用于来自本地 maven 存储库的捆绑包,也适用于来自 maven Central 的捆绑包。

当然,您通常不会将自己的工件部署到 Maven 中心。因此,如果您想在公司内部使用它,您应该设置一个 Maven 存储库,例如 Nexus 或 Archiva。然后,您使用 mvn clean deploy 将您自己的包部署到您的公司存储库中。当然,这需要您正确设置 pom,但对于任何更大的项目,您都需要它。

然后需要的最后一步是设置您的 Fuse ESB / Karaf 以也使用您的公司存储库。这是通过将 repo uri 添加到文件 etc/org.ops4j.pax.url.mvn.cfg 来完成的。

当然,这比 Neil 提出的 http url 要多一些工作。优点是这将与您的 maven 构建过程很好地集成,并且它将使您的 bundle mvn uris 独立于您的 maven repo 的位置。当您开始使用功能组合它们时,它还允许您混合自己的包和开源包。

于 2013-05-05T14:39:21.923 回答