2016-02-04 43 views
0

我該如何實現插件不會內聯新建構建jar文件中的依賴關係?Apache Felix Maven Bundle Plugin避免內聯依賴關係

<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> 
+0

請問你的pom.xml有 <嵌入的依賴> ..... 這將主要包括或內聯所有的依賴到你的包,可以你發佈你的pom.xml – blob

+0

我更新了相應的問題 – Benny

+0

哪些軟件包內聯? 你可以嘗試刪除Private-Package和Import-Package標籤嗎? –

回答

1

該插件不會內聯任何依賴關係,除非包含Embed-Dependency指令。該指令可以從父POM繼承。

+0

我認爲這是對的,我不會做任何改變,因爲它只是一個解決方法。我現在提供了一個最終的MANIFEST,它被包裝在罐子裏。 – Benny

0

所有與<導出包>指令相匹配的軟件包都包含在軟件包中,即使這些軟件包來自依賴項。因此,您可以明確指定軟件包中的所有軟件包,也可以使用通配符並使用'!'排除不需要的軟件包前綴,例如

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

看到maven-bundle-plugin documentation

0

使用_exportcontents而不是Export-Package

_exportcontents僅影響清單,而Export-Package修改清單和您的包的內容。

見:http://www.aqute.biz/Bnd/Format