2012-09-16 45 views

回答

4

Maven使用依賴項部分列出的jar來創建類路徑。 bnd(maven bundle插件中的引擎)使用此類路徑通過字節代碼分析來分析代碼所指的內容。

maven dependency -> classpath -> bnd analysis -> import statements 
2

Import-Package用於細化maven bundle插件爲您自動生成的包導入列表。例如,您可以聲明一些可選的導入,或者爲僅通過反射訪問的類添加導入。在大多數情況下,因爲缺省值爲*,因此Import-Package應該沒有必要指定任何內容 - 也就是說,將導入字節碼中引用的任何外部程序包。

dependencies部分提供了編譯器用來生成字節碼的bundle池和bnd(這是封裝下的bundle插件)來改進軟件包導入。例如,它會根據依賴項列表(或傳遞依賴項)中的提供包中的導出版本添加版本範圍。

+0

但是在哪裏可以自動在字節碼中找到引用的包?從本地的Maven倉庫? – user1450233

+0

一旦包在字節碼中被引用,bundle插件已經知道它的名字,並且可以將它包含在導入包語句中,所以它不需要被「找到」。然而,幾乎總是在字節碼中引用的任何東西都將作爲maven依賴包含在內,因爲否則它如何被編譯? 「依賴項」部分中列出的依賴項是從本地或遠程Maven存儲庫中提取的。這允許bundle插件計算出要導入的版本範圍。 –