配置分辨率:=来自Maven包插件的可选

时间:2018-08-31 12:32:43

标签: osgi-bundle maven-bundle-plugin

我需要帮助将依赖项配置为可选,

使用maven-bundle-plugin:3.4.0,

在“导入软件包”部分中,它们称为“分辨率:可选”

<plugin> 
        <groupId>org.apache.felix</groupId> 
        <artifactId>maven-bundle-plugin</artifactId> 
        <version>3.4.0</version> 
        <extensions>true</extensions> 
        <executions> 
                <execution> 
                <id>bundle-manifest</id> 
                <phase>process-classes</phase> 
                <goals> 
                    <goal>manifest</goal> 
                </goals> 
                <configuration> 
                        <instructions> 
                                <Export-Package>*</Export-Package> 
                                <Import-Package> 
                                        org.junit.*;/resolution=optional/, 
                                        junit.framework.*;/resolution=optional/ 
                                </Import-Package> 
                                <_nouses>true</_nouses> 
                        </instructions> 
                </configuration> 
        </execution> 
   </executions> 
</plugin> 

生成的期望OSGI清单文件应包含 resolution:=对该库是可选的,但更改未反映出来。

期望: junit.framework; resolution:=可选

但在生成的清单文件中 junit.framework

我是否错过任何配置以将其分辨率反映为 生成清单文件?

在调查Maven-Bundle-Plugin,BundlePlugin.java文件时,我意识到 如果工件包含可选的true,则反映在 生成清单文件作为分辨率:=可选

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 

   <scope>provided</scope> 
   <optional>true</optional> 
</dependency> 

但是根据BundlePlugin.java,先前的解决方案应该可以工作 源代码

引导我继续前进。

1 个答案:

答案 0 :(得分:0)

您只需要删除resolution=optional周围的斜杠(/):

<Import-Package> 
    org.junit.*;resolution=optional,
    junit.framework.*;resolution=optional
</Import-Package>