我用的OSGi /春分和在瀏覽MANIFEST.MF文件,我所遇到的怪行的程序包中的一個:什麼是動態=域導出在osgi中?
Export-Package: package.a.b.c;dynamic=domain
是什麼意思,該包裝是導出的動態=域選項和怎麼做它與常規出口不同(沒有任何附加選項)?
我用的OSGi /春分和在瀏覽MANIFEST.MF文件,我所遇到的怪行的程序包中的一個:什麼是動態=域導出在osgi中?
Export-Package: package.a.b.c;dynamic=domain
是什麼意思,該包裝是導出的動態=域選項和怎麼做它與常規出口不同(沒有任何附加選項)?
您可以根據需要將任意數量的自定義屬性添加到Export-Package子句中。另一方面(Import-Package),您可以指定只有具有特定屬性的包才適合您。
請參見3.6.5 出口,包裝的OSGi核心規範的:
以下屬性是本規範的一部分:
版本 - 指定包的版本。其語法如第35頁的版本中所定義。其 定義了相關軟件包的版本。默認值是0.0.0。
specification-version - 版本屬性的別名僅用於簡化從早期版本的遷移。如果版本屬性存在,則值必須相等。
此外,可以指定任意的匹配屬性。見屬性匹配58
頁上,並請參見3.7.7 屬性相匹配的OSGi核心規範的:
例如,下面的語句將匹配。
A: Import-Package: com.acme.foo;company=ACME
B: Export-Package: com.acme.foo; «
company="ACME"; «
security=false
屬性值進行比較字符串除了版本明智和捆綁的版本屬性,其使用版本範圍的比較。屬性值中的前導和尾隨空白必須被忽略。
請注意,我僅引用了這些章節的某些部分。你應該檢查規範中的原件。
我不認爲這些屬性在Equinox代碼中以特定方式處理。如果有多個具有相同名稱的包,它們可以在Import-Pacakge子句中使用。
今天我學到了東西,謝謝! – kukis
值得一提的是,通過添加指令'mandatory:= dynamic',可以將某些或所有屬性標記爲強制性的。這意味着導入器*必須*具有'動態'屬性的匹配值,否則它不能從該捆綁包中導入該包。這對於處理拆分包來說很有用,因爲它避免了任何包「意外」地導入部分拆分。然而,這是一個相當先進的話題! –
@NeilBartlett這就是爲什麼我建議閱讀說明:) –