【问题标题】:Include OSGI jar for JUnit test包括用于 JUnit 测试的 OSGI jar
【发布时间】:2014-04-13 19:12:33
【问题描述】:

我有一个使用外部 jar 进行日志记录的 OSGI 包。

<dependency>
    <groupId>Tracking-Service</groupId>
    <artifactId>Tracking_Service</artifactId>
    <version>1.0</version>
    <type>jar</type>
</dependency>

在构建期间,我有一个调用日志 jar 的 JUnit 测试。但是这些 jar 没有部署到 OSGI 框架中,我得到了 NPE。

最后我需要有日志 jar,它也在

<scope>provided</scope>
<scope>test</scope>

有没有办法将日志记录 jar 也包含在模拟测试中?

【问题讨论】:

  • 您说的是用于记录您构建的自定义 jar 还是像 log4j 这样的大型日志系统之一?

标签: java maven osgi pom.xml


【解决方案1】:

有两种可能的方法可以通过 OSGI 包获取该 jar

  • 获取该 jar(包)的 OSGI 版本并部署它(如果使用 Karaf,请尝试搜索该功能(如果可用))Spring Repo for OSGI bundles

当且仅当你没有找到第一个

  • 您可以将其嵌入到您的捆绑包中,如下所示

在您的 Maven 构建插件中添加以下内容

<Embed-Dependency>jar_name</Embed-Dependency>

编辑:

如果你使用 eclipse,你可以在你的 pom 文件中使用以下插件

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.7</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Embed-Dependency>jar_name</Embed-Dependency>
        </instructions>
    </configuration>
</plugin>

【讨论】:

  • 你能告诉我更多关于如何使用 Apache Felix 做到这一点的信息吗?
  • Felix 从 1.2.0 版本开始支持嵌入,请阅读此处felix.apache.org/documentation/subprojects/…
  • 如果你想将你的 jar 打包并部署在 Felix 中,你可以在这里参考我的答案stackoverflow.com/a/17803834/2381006
  • 顺便说一句,这只会在构建期间嵌入捆绑包,还是会将日志记录 jar 复制到父 jar 中?
猜你喜欢
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多