Maven 减少OSGi捆绑包中导入包的数量

Maven 减少OSGi捆绑包中导入包的数量,maven,osgi,osgi-bundle,maven-bundle-plugin,Maven,Osgi,Osgi Bundle,Maven Bundle Plugin,在OSGi包中,我试图删除*;分辨率=可选,并指定特定的导入。 当我在运行时检查时,导入如下所示 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

在OSGi包中,我试图删除
*;分辨率=可选
,并指定特定的导入。 当我在运行时检查时,导入如下所示

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>
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”
org.apache.catalina.tribes.group;version=“0.0.0”
org.apache.catalina.tribes.group.interceptors;version=“0.0.0”
org.apache.catalina.tribes.io;version=“0.0.0”
org.apache.catalina.tribes.tipis;version=“0.0.0”version=“0.0.0”
我可以这样减少这个吗

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

org.apache.catalina.*;version=“8.0.20”,
org.apache.catalina.tribes.*;分辨率:=可选,
这是一种好的做法吗

当我使用稍后的配置构建jar时,在清单文件中,它在包旁边显示resolution=optional

编辑

依赖部分

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

org.apache.tomcat
卡塔琳娜山猫
8.0.20
真的

您不能在清单中使用*,但可以使用maven bundle插件并在其配置中使用*


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

我使用的是maven bundle插件。我已经编辑了我的问题,您是否可以在pom中显示相关的maven依赖项?尝试将您的maven依赖项设置为非可选。不确定这是否是你在maven方面想要的,但它可能会对清单有所帮助。是的,然后它会起作用。看起来org.apache.catalina.*;version=“8.0.20”,在org.apache.catalina.org中获得优先级,因此分辨率=可选。似乎我必须一个接一个地定义包。我不太清楚你想做什么。这些包是包中代码的依赖项。如果你不想要依赖项,那么就不要使用那些包…@NeilBartlett我正在从提到的依赖项创建一个OSGi包,并导出它的一些包我看到了。。。那么,问题出在哪里呢?在检查清单时创建包之后,它仍然使用resolution:=可选的versionRight,这与您从maven指令中发布的代码片段一致。