在servicemix中安装功能

Lui*_*ixv 4 java jtidy maven apache-karaf apache-servicemix

我正在运行Apache servicemix 4.5.2.我想安装一个功能,即一个jar文件.我想要的功能是jtidy.

pom依赖是:

<dependency>
    <groupId>jtidy</groupId>
    <artifactId>jtidy</artifactId>
    <version>4aug2000r7-dev</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

而存储库是

http://repo1.maven.org/maven2/jtidy/jtidy/4aug2000r7-dev/jtidy-4aug2000r7-dev.jar

我知道命令功能:安装webconsole,例如但jtidy不在我的功能:列表中.我也尝试过使用addurl命令,但它没有用.(addurl mvn:http://repo1.maven.org/maven2/jtidy/jtidy/4aug2000r7-dev)Karaf文档建议使用Features XML架构添加功能描述符,但遗憾的是链接已损坏.

要知道我做的是下载jtidy.jar并将其复制到我的deploy目录.它有效,但我不认为这是正确的方法.

有人知道如何在servicemix中正确安装jtidy吗?

谢谢!

ger*_*rtv 6

安装功能和安装单个JAR或OSGi捆绑包之间存在差异.

功能在XML文件中定义.一个功能包括许多捆绑,配置,......安装在一起.请查看http://karaf.apache.org/manual/latest-2.3.x/users-guide/provisioning.html以了解有关Karaf功能的更多信息.

在这种情况下,您希望将单个JAR安装到容器中.您可以使用该命令osgi:install执行此操作,然后使用指向JAR的URL(例如mvn:jtidy/jtidy/4aug2000r7-dev).

但是,在您的情况下,还有一个复杂性.jtidy它本身不是OSGi包.添加必要的OSGi元数据的最简单方法是使用wrap:协议自动将OSGi元数据添加到JAR.

因此,要完成包装 - jtidy在Apache ServiceMix中安装此依赖项,您可以使用

osgi:install wrap:mvn:jtidy/jtidy/4aug2000r7-dev

  • 如果您使用Maven进行开发,通常的解决方案是构建工件,然后为工件使用相同类型的URL(mvn:<group id>/<artifact id>/<version>).但是,URL可以是您真正想要的任何内容,因此您也可以使用http:// ...或file://指向工件. (2认同)