如何使用 bnd/maven-bundle-plugin 将资源文件从 jar 依赖项包含到 osgi 包中?

2024-03-08

我在用着maven-bundle-plugin (bnd有效地)。

从源中包含资源文件很简单。

例如,资源文件(src/main/resources/some.xml) 移至下面target目录 (target/classes/some.xml)在构建期间,可以使用以下命令将其包含到捆绑包中<Include-Resource>操作说明:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>3.0.1</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Include-Resource>
                some.xml=target/classes/some.xml,
            </Include-Resource>
        </instructions>
    </configuration>
</plugin>

让我们有一个依赖:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>library</artifactId>
    <version>1.0.0</version>
</dependency>

如何引用依赖内部的资源文件jar?

换句话说,如何

  • 指定这样的内容:

    com.example:library:1.0.0:jar/some.xml
    
  • 而不是这个:

    target/classes/some.xml
    

以便来自依赖项之一的资源出现在输出包中jar?


您可以使用maven-dependency-plugin解压缩您的依赖项 jar,然后将资源包含在您的 jar 中。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack-dependencies</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <markersDirectory>${project.build.directory}/dependencies/dependency-maven-plugin-markers</markersDirectory>
                <artifactItems>
                    <artifactItem>
                        <groupId>DEPENDENCY_GROUPID</groupId>
                        <artifactId>DEPENDENCY_ARTIFACTID</artifactId>
                        <type>OPTIONAL_DEPENCENCY_TYPE</type>
                        <outputDirectory>${project.build.directory}/dependencies/DEPENDENCY_ARTIFACTID</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
...
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <configuration>
        ...
        <instructions>
            ...
            <Include-Resource>target/dependencies/DEPENDENCY_ARTIFACTID/some.xml</Bundle-Activator>
        </instructions>
    </configuration>
</plugin>

The Include-Resource说明应该是 pom 相关的,请参阅包含资源 http://felix.apache.org/documentation/subprojects/apache-felix-maven-bundle-plugin-bnd.html#include-resource,你也许可以替换targetwith ${project.build.directory}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 bnd/maven-bundle-plugin 将资源文件从 jar 依赖项包含到 osgi 包中? 的相关文章

  • 当存在多个实现时,优先考虑容器内的 OSGi 服务选择

    我正在玩 OSGi 并且有一些捆绑包 捆绑包 A 和 B 都包含实现单个接口的注册服务 第三个包 C 包括用于查找实现前面提到的接口的服务的代码 A 和 B 捆绑包具有不同的版本号 但 C 似乎从第一个启动的捆绑包中获取服务 我已经更改了启
  • Glassfish 作为 OSGi 容器

    我正在评估 OSGi 容器 主题是使用 Glassfish 来包含我的 OSGi 应用程序组件 我的问题是 Glassfish 对此有好处吗 有人有以这种方式使用它的经验吗 背景 该应用程序不是 Java EE 应用程序 而是 Spring
  • 如何从头开始对包使用 org.apache.felix.scr 注释?

    我已经开始为 apache felix 开发一个包 并使用 ops4j pax 插件来完成 我已经创建了项目结构pax create project在那里做了正常的pax create bundle 然后你就得到了用 Maven 构建整个项
  • 与 Axis 和 OSGi 的奇怪交互

    这是场景 我有 2 个带有 axis 1 4 的捆绑包 它们嵌入了传递依赖项 它们各自调用不同的 Web 服务来完成其工作 似乎当一个包在另一个包之前加载时 另一个包 丢失 但出现以下异常 java lang RuntimeExceptio
  • 如何从 jar 库创建 OSGi 包?

    如何从 jar 库创建 OSGi 包 如果您使用的是 eclipse 有一个向导 它允许您选择多个 jar 库并创建包含这些 jar 的插件项目 即 OSGi 包 你可以在这里找到它 File gt New gt Other gt Plug
  • 如何使用 OSGi 和 EE6 模块化企业应用程序?

    我知道已经有一些与该主题相关的问题 但我还找不到真正的解决方案 目前我正在使用 EE6 JPA CDI JSF 开发应用程序 我想采用一种更加模块化的方法 而不是将所有内容打包到 WAR 或 EAR 中并将整个内容部署在应用程序服务器上 我
  • 我们如何为 pom.xml 创建一个 build.gradle 等效文件来构建和部署 AEM 代码?

    我正在尝试创建一个构建 gradle文件 例如完整的 pom xmlAEM Maven 原型 https github com Adobe Marketing Cloud aem project archetype or 懒骨头模板 htt
  • Karaf OSGi 中无法加载 ScriptEngineManager 和 ScriptEngine(未找到 Nashorn)

    我正在尝试使用ScriptEngineManager and ScriptEngine使用 Java 执行一些 JavaScript 代码 我使用 Java 8 在 Karaf OSGi 下执行此代码 我使用的示例在示例 Java 类中运行
  • OSGI 嵌套依赖 jar

    如果我有一个 OSGI Bundle 其中包含嵌套在 OSGI Bundle jar 中的依赖项 jar 我是否需要在 Import Package 清单中列出这些类以便我可以使用它们 我认为不会 另外 如何将这些依赖项 jar 添加到我的
  • 使用 Felix 和 Maven 创建完整的 OSGi 应用程序

    我有一组使用 Maven 构建的 OSGi 包 我想知道是否有一个可用的 Maven 插件可以让我执行以下操作 指定要包含在发行版中的一组捆绑包和 或指定单个捆绑包并解决依赖关系 构建一个完整的分发框架 我的意思是一个包含所有需要的包的 z
  • 何时使用 ServiceLoader 而不是 OSGi 之类的东西

    作为一个对依赖项过敏的人 我什么时候会使用 OSGi 之类的东西来代替内置的 java 6http java sun com javase 6 docs api java util ServiceLoader html http java
  • 什么是 p2 存储库?

    我现在正在开发一个项目几个月 我们使用 p2 repositories 我知道我从他们那里得到了我的依赖 但现在我想更深入地研究这个主题 我想知道 p2 存储库到底是什么 定义 我认为这与 OSGi 和 Nexus 有关 但它从哪里来呢 当
  • 包使用冲突:捆绑包启动时的导入包

    尝试安装 htmlunit 捆绑包时出现以下错误 com springsource com gargoylesoftware htmlunit 2 6 0 370 could not be resolved Reason Package u
  • 在 Java 8 中使用 Java 7 比较器

    情况 我有一个 OSGi 项目 我正在尝试迁移到 Java 8 在我的项目中 我依赖于我 OSGi fied 的第三方库 只需添加MANIFEST MF文件并将元数据放入其中 这些库是从只读 SVN 存储库中签出的 因此我可以在需要时签出更
  • OSGI Felix 容器正在初始化模拟私有字段

    我试图模拟我的类中的一个私有字段 该字段由运行我的应用程序的 OSGI 容器初始化 我放了一个示例代码供参考 请提供任何线索 import org apache felix scr annotations Component name My
  • 有没有办法查看 OSGi 应用程序中注册的服务?

    我有一个运行 Equinox 的 OSGi 应用程序 我想查看该应用程序提供的服务 我怎样才能做到这一点 从 gogo shell 类型 inspect cap service 这将显示所有捆绑包注册的所有服务 如果您想显示特定捆绑包的服务
  • 使用上下文加载器加载资源失败并出现 NullPointerException

    我只是想知道为什么我无法使用 Felix OSGi 中的线程上下文加载器加载资源 我是否不应该接触上下文加载器 我是否做错了什么或者这是一个错误 我有一个超级简单的捆绑包 带有一个简单的激活器 public class Activator
  • 如何为 Apache POI 3.8 创建工作 OSGI 包?

    我的目标是创建 Excel 2007 文档 XLSX 在 Eclipse RCP 环境中 Excel 2003 很简单 我不想将 POI jar 放在 lib 文件夹中 相反 我想使用目标定义中的工作 POI OSGI 包 到目前为止我所有
  • 如何在 Karaf 中运行 Vaadin 7 应用程序?

    我几天来一直在寻找这个问题的答案 进行了大量的实验 我需要做什么才能在 Karaf 内使用 Vaadin Web 框架版本 7 运行应用程序 有一些关于它的信息 但我读过的解决方案都不起作用 我在 SO 上发现的唯一相关问题 如何将 Vaa
  • 以编程方式启动 OSGi (Equinox)?

    我希望能够轻松启动 OSGi 框架 最好是 Equinox 并从 java main 加载我的 pom 中列出的任何包 这可能吗 如果是这样 怎么办 似乎 pax 工具可以做到这一点 但我似乎找不到任何表明这一点的文档 我知道我可以像这样启

随机推荐