0

在 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>
4

1 回答 1

2

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

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

于 2015-05-07T07:33:29.487 回答