2016-07-07 38 views
0

我想構建osgi組件,並且我被告知要使用maven-bundle-plugin。我開始加入到這個我pom.xml如何在使用maven-bundle-plugin時形成.bnd文件?

 <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>3.0.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <obrRepository>NONE</obrRepository> 
        <instructions> 
         <_include>-bnd.bnd</_include> 
        </instructions> 
       </configuration> 
     </plugin> 

通知被傳遞到<_include>標籤.bnd文件。我聽說有人說這些文件應該保持在最低限度,甚至是空的,然後應該觀察哪些進口/出口是需要的,等等。這是我感到困惑的地方。我有我的MANIFEST.MF文件,其中我知道要導入和導出什麼。但是,我需要一些幫助才能使.bnd文件正常工作。現在我正在嘗試使用空的.bnd文件,我不確定它是否正常工作。

有沒有人有這個插件的經驗和我想讓它工作的方式?

例如,here是樣本.bnd文件。但我不知道他是如何決定這些應該進口/出口的。

截至目前,當我試圖測試.jar我得到

no main manifest attribute, in bundle-1.0.0.jar 

錯誤儘管事實上,的確有在.jarMANIFEST.MF

更新:我想我可以分享我以前想要通過這個插件生成的MANIFEST.MF

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Just a Name 
Bundle-SymbolicName: just.a.name.broker;singleton:=true 
Bundle-Version: 1.0.0 
Require-Bundle: org.apache.activemq, 
just.msg 
Bundle-Activator: just.a.broker.Activator 
Bundle-ActivationPolicy: lazy 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Import-Package: javax.naming, 
javax.xml, 
javax.xml.parsers, 
org.apache.log4j.xml, 
org.osgi.framework 
Bundle-ClassPath: . 
Export-Package: just.a.broker 

所以爲了能有這樣的表現,應該如何我.bnd文件是什麼樣子?或者在插件中包含屬性而不是傳遞.bnd文件更好?

回答

1

您.BND文件可能是這樣的:

Bundle-Activator: just.a.broker.Activator 
Bundle-ActivationPolicy: lazy 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Require-Bundle: org.apache.activemq,\ 
    just.msg 

Import-Package: *,\ 
    javax.naming,\ 
    javax.xml,\ 
    javax.xml.parsers,\ 
    org.apache.log4j.xml,\ 
    org.osgi.framework 

Bundle-ClassPath: . 
Export-Package: just.a.broker 

希望這會有所幫助。

+0

謝謝!它絕對做到了! –

相關問題