Bnd - Bundle Tool中文使用手冊
在Play OSGi中提及到了Bnd是個非常有用的東西,既然是個好東西,就介紹給大家用,在得到了Peter的授權下,我把這篇使用手冊翻譯成了中文,大家感興趣的話可以到這里看看:http://www.aqute.biz/Code/BndCn,同時也會提供一個PDF的版本供大家下載,PDF版本下載地址為:http://www.aygfsteel.com/Files/BlueDavy/Bnd.zip。
有了Bnd后,傳統的java工程非常容易打包成標準的OSGi R4的bundle,同時Bnd也為校驗Bundle是否符合OSGi R4規范提供了支持,而且Bnd有命令行、Eclipse插件、Ant Task和Maven插件,拿過來非常的好用,強烈推薦大家用用看。
不過如果Bnd推出一個圖形的編輯文件內容的插件就更好了,就像插件里的Manifest.MF的圖形編輯器一樣,那樣Bnd就好用了。
在這里簡單的說一個使用Bnd打包生成Bundle的例子,
例如我們要把Eclipse里A工程里的接口和實現打包成兩個Bundle:
首先把接口部分cn.org.osgi.demo里的類打包為demo Bundle,并允許其他Bundle訪問到這個package,那么就只需要在A工程里建立一個cn.org.osgi.demo.bnd的文件,文件內容這么寫:
Export-Package = cn.org.osgi.demo;-noimport:=true;version=1.0
Bundle-Version = 1.0
然后就只需要在Eclipse里選中此文件,點擊右鍵,選擇Make Bundle就會在和bnd文件同級的目錄下生成一個cn.org.osgi.demo.jar文件,打開這個jar文件查看它的manifest.mf文件,內容如下:
Manifest-Version: 1.0
Bundle-Name: A
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cn.org.osgi.demo
Tool: Bnd-0.0.160
Bnd-LastModified: 1185523455812
Export-Package: cn.org.osgi.demo;version=1.0
Bundle-Version: 1.0
可以看到,Bnd已經按照OSGi規范生成了標準的manifest.mf的內容。
然后把實現部分cn.org.osgi.demo.impl里的類打包為demo Impl Bundle,同樣的在A工程里建立一個cn.org.osgi.demo.impl.bnd的文件,文件內容這么寫:
Private-Package = cn.org.osgi.demo.impl
Bundle-Version = 1.0
同樣的方法打包生成此Bundle,這個Bundle的manifest.mf文件內容為:
Manifest-Version: 1.0
Bundle-Name: A
Private-Package: cn.org.osgi.demo.impl
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Import-Package: cn.org.osgi.demo
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cn.org.osgi.demo.impl
Tool: Bnd-0.0.160
Bnd-LastModified: 1185523495406
Bundle-Version: 1.0
可以看到,基于Bnd我們非常容易就把一個傳統的java工程打包成了兩個有效的OSGi R4的Bundle,從這可以看出這對于要把傳統的java系統重構為基于OSGi的系統會有很大的幫助,除了打包生成Bundle外,Bnd本身還具備了校驗bundle是否符合OSGi R4規范、把新的文件或jar文件添加到已存在的Bundle中去。
如果覺得還不錯的話,大家不妨試試,具體的使用方法可以看使用手冊。
有了Bnd后,傳統的java工程非常容易打包成標準的OSGi R4的bundle,同時Bnd也為校驗Bundle是否符合OSGi R4規范提供了支持,而且Bnd有命令行、Eclipse插件、Ant Task和Maven插件,拿過來非常的好用,強烈推薦大家用用看。
不過如果Bnd推出一個圖形的編輯文件內容的插件就更好了,就像插件里的Manifest.MF的圖形編輯器一樣,那樣Bnd就好用了。
在這里簡單的說一個使用Bnd打包生成Bundle的例子,
例如我們要把Eclipse里A工程里的接口和實現打包成兩個Bundle:
首先把接口部分cn.org.osgi.demo里的類打包為demo Bundle,并允許其他Bundle訪問到這個package,那么就只需要在A工程里建立一個cn.org.osgi.demo.bnd的文件,文件內容這么寫:
Export-Package = cn.org.osgi.demo;-noimport:=true;version=1.0
Bundle-Version = 1.0
然后就只需要在Eclipse里選中此文件,點擊右鍵,選擇Make Bundle就會在和bnd文件同級的目錄下生成一個cn.org.osgi.demo.jar文件,打開這個jar文件查看它的manifest.mf文件,內容如下:
Manifest-Version: 1.0
Bundle-Name: A
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cn.org.osgi.demo
Tool: Bnd-0.0.160
Bnd-LastModified: 1185523455812
Export-Package: cn.org.osgi.demo;version=1.0
Bundle-Version: 1.0
可以看到,Bnd已經按照OSGi規范生成了標準的manifest.mf的內容。
然后把實現部分cn.org.osgi.demo.impl里的類打包為demo Impl Bundle,同樣的在A工程里建立一個cn.org.osgi.demo.impl.bnd的文件,文件內容這么寫:
Private-Package = cn.org.osgi.demo.impl
Bundle-Version = 1.0
同樣的方法打包生成此Bundle,這個Bundle的manifest.mf文件內容為:
Manifest-Version: 1.0
Bundle-Name: A
Private-Package: cn.org.osgi.demo.impl
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
Import-Package: cn.org.osgi.demo
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cn.org.osgi.demo.impl
Tool: Bnd-0.0.160
Bnd-LastModified: 1185523495406
Bundle-Version: 1.0
可以看到,基于Bnd我們非常容易就把一個傳統的java工程打包成了兩個有效的OSGi R4的Bundle,從這可以看出這對于要把傳統的java系統重構為基于OSGi的系統會有很大的幫助,除了打包生成Bundle外,Bnd本身還具備了校驗bundle是否符合OSGi R4規范、把新的文件或jar文件添加到已存在的Bundle中去。
如果覺得還不錯的話,大家不妨試試,具體的使用方法可以看使用手冊。
posted on 2007-07-27 16:11 BlueDavy 閱讀(6194) 評論(3) 編輯 收藏 所屬分類: OSGi、SOA、SCA