Apache Felix Maven Bundle插件避免内联依赖

时间:2016-02-04 08:41:20

标签: osgi apache-felix

如何实现插件不会内联新构建jar文件中的依赖项?

<build>
  <plugins>
   <plugin>
     <groupId>org.apache.felix</groupId>
     <artifactId>maven-bundle-plugin</artifactId>
     <extensions>true</extensions>
     <configuration>
       <instructions>
         <Bundle-Category>tools</Bundle-Category>
         <Fragment-Host>org.jsmpp.jsmpp</Fragment-Host>
         <Private-Package>!</Private-Package>
         <Export-Package>
           org.jsmpp.*;version="2.2.3"
         </Export-Package>
         <Import-Package>!org.slf4j</Import-Package>
         <Bundle-Version>2.2.3</Bundle-Version>
       </instructions>
     </configuration>
   </plugin>
  </plugins>
</build>
<dependencies>
  <dependency>
    <groupId>org.jsmpp</groupId>
    <artifactId>jsmpp</artifactId>
  </dependency>
</dependencies>

3 个答案:

答案 0 :(得分:1)

除非包含Embed-Dependency指令,否则插件不会内联任何依赖项。该指令可以从父POM继承。

答案 1 :(得分:0)

与&lt; Export-Package&gt;匹配的所有包指令包含在包中,即使这些包来自依赖项。因此,您可以显式指定捆绑包中的所有包,也可以使用通配符并使用“!”排除不需要的包。前缀,例如

<Export-Package>
    org.jsmpp.*;version="2.2.3",
    !org.jsmpp.donotwant
</Export-Package>

请参阅maven-bundle-plugin documentation

答案 2 :(得分:0)

使用_exportcontents代替Export-Package

_exportcontents仅影响清单,而Export-Package会修改清单和捆绑包的内容。

请参阅:http://www.aqute.biz/Bnd/Format