java - 使用 Karaf 的 features-maven-plugin maven 插件需要帮助... osgi

标签 java maven osgi apache-karaf

我的目标是为我的多模块 Maven 项目创建一个 features.xml 并收集各种功能所需的所有必需的 jar。我需要通过 file: 而不是 mvn: 来解析 bundle jars:

我尝试使用 features:generate-features-xml 目标。首先,没有关于属性文件格式的文档。其次,它创建所有由 mvn 解析的包:例如

<feature name='spring-jms' version='3.1.0.RELEASE'>
  <bundle>mvn:org.springframework/spring-tx/3.1.0.RELEASE</bundle>
  <feature version='3.1.0.RELEASE'>spring-core</feature>
  <bundle>mvn:org.codehaus.jackson/jackson-core-asl/1.9.9</bundle>
  <bundle>mvn:org.springframework/spring-jms/3.1.0.RELEASE</bundle>
</feature>

我的第一个问题是有没有办法通过 file: 而不是 mvn: 访问包? 例如

<bundle>file:some/path/spring-tx.jar</bundle>  

或者其他什么。

第二个问题:收集所有必需的 jar 文件的最佳方法是什么?我一直在使用 Maven 程序集插件,但这似乎不太理想。

谢谢。

最佳答案

您可以使用文件格式来寻址功能文件中的 bundle ,但 Maven 功能插件仅支持 Maven 解析。

应用程序的最终用户无法访问互联网是很常见的情况。您仍然可以使用 Maven 解析。您有两个主要选择:

  • 使用 karaf 功能插件从功能创建 Maven 存储库。然后,您可以将此目录添加到 org.ops4j.pax.url.mvn.cfg 中的 maven 存储库列表
  • 从 karaf 2.3 开始,您可以使用 kar 文件。 kar 文件是 Maven 存储库的 zip 和指向内部功能文件的指针。您可以将 kar 文件放入 karaf 的部署文件夹中,它将安装该功能

这样做的好处是,您的功能文件始终基于 Artifact 的 Maven ID。您只需改变交付 jar 的方式即可。因此,如果您有互联网或 Maven 存储库访问权限,您可以简单地使用功能文件(例如在开发中)。

关于java - 使用 Karaf 的 features-maven-plugin maven 插件需要帮助... osgi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015378/

相关文章:

java - 如何制作Java正则表达式

java - Hibernate sql错误:java. lang.String无法转换为java.lang.Integer

java - 如何扫描远程主机使用的端口?

Maven Shade 插件生成两个 Jars

maven - 在没有互联网连接的计算机上安装Apache Giraph

java - 如何在 OSGi Karaf 中注册 org.apache.aries.blueprint.Interceptor?

Linux 上的 Java : maximize a non-Java GUI application

eclipse - Tycho 是否适用于 Eclipse 3.5

java - 用于检查已使用文件的 Windows 工具(通过 Java OSGi 进程)

java - 编译时删除 JSP 文件中的前导空格/空格和空行