【问题标题】:Reduce number of Import packages in an OSGi Bundle减少 OSGi Bundle 中导入包的数量
【发布时间】:2015-07-17 14:20:18
【问题描述】:

在 OSGi 包中,我试图删除 *;resolution=optional 并指定特定的导入。 当我在运行时检查时,导入如下

org.apache.catalina.valves; version="8.0.20",
org.apache.catalina.util; version="8.0.20",
org.apache.catalina.session; version="8.0.20",
org.apache.catalina.realm; version="8.0.20",
org.apache.catalina.core; version="8.0.20",
org.apache.catalina.connector; version="8.0.20",
org.apache.catalina.authenticator; version="8.0.20",
org.apache.catalina; version="8.0.20",
org.apache.catalina.tribes; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.group; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.group.interceptors; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.io; version="0.0.0"<unwired><optional>
org.apache.catalina.tribes.tipis; version="0.0.0"version="0.0.0"<unwired><optional>

我可以这样减少吗?

<Import-Package>
    org.apache.catalina.*;version="8.0.20",
    org.apache.catalina.tribes.*;resolution:=optional,
</Import-Package>

这是一个好习惯吗?

当我使用以后的配置构建 jar 时,仍然在 MANIFEST 文件中,它在包旁边显示 resolution=optional

编辑

依赖部分

<dependencies>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina-ha</artifactId>
            <version>8.0.20</version>
            <optional>true</optional>
        </dependency>
</dependencies>

【问题讨论】:

  • 我不太清楚你想做什么。这些包是包中代码的依赖项。如果您不想要依赖项,请不要使用这些包...
  • @NeilBartlett 我正在从提到的依赖项创建一个 OSGi 包并导出它的一些包
  • 我明白了……那么,有什么问题?
  • 在检查清单时创建捆绑包后,它仍然使用分辨率:=版本可选
  • 对,这与您从 maven 说明中发布的 sn-p 一致。

标签: maven osgi osgi-bundle maven-bundle-plugin


【解决方案1】:

您不能在 Manifest 中使用 *,但您可以使用 maven-bundle-plugin 并且在其配置中 * 是可能的。

在 maven-bundle-plugin 中,您通常根本不必手动指定导入。该插件扫描使用的包并配置导入包语句,包括标准版本范围。如果您的 maven 依赖项是可选的,它也将使用可选标志。

【讨论】:

  • 我正在使用 maven-bundle 插件。我已经编辑了我的问题
  • 能否在你的pom中也显示相关的maven依赖?
  • 尝试让你的 maven 依赖不可选。不确定这是否是您在 Maven 方面想要的,但它可能对清单有所帮助。
  • 是的,它可以工作。似乎 org.apache.catalina.*;version="8.0.20", 获得优先权,因此 org.apache.catalina.tribes 中的 resolution=optional 被跳过。看来我得一一定义包了
猜你喜欢
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2011-03-06
  • 2012-08-16
  • 1970-01-01
  • 2016-04-17
  • 2017-04-07
相关资源
最近更新 更多