Maven 减少OSGi捆绑包中导入包的数量
在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
*;分辨率=可选
,并指定特定的导入。
当我在运行时检查时,导入如下所示
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指令中发布的代码片段一致。