簡體   English   中英

OSGi / BND:如何從捆綁包生成中排除類?

[英]OSGi/BND: How to exclude classes from bundle generation?

我有一個具有以下結構的捆綁項目(Eclipse):

 src/main/java Bundle source files here src/test/java Bundle internal test cases 

當我嘗試制作捆綁包時,出現一個錯誤,提示有一些“未解決的引用”。 錯誤是由內部測試類引起的。 如何配置BND忽略這些類?

不能將測試用例拆分到一個單獨的項目中,因為測試用例的粒度比捆綁軟件提供的API的粒度要好得多。

問題在於Eclipse會將src/main/javasrc/test/java都編譯到同一個輸出目錄(可能是“ bin”)中,並且Bnd通過掃描bin文件夾中的已編譯.class文件來工作。

您可以按照以下步驟解決此問題:

  1. 右鍵單擊src/test/java然后選擇“構建路徑”>“配置輸出文件夾...”。

  2. 單擊“特定輸出文件夾”,然后輸入目錄名稱,例如bin_tests

現在,Eclipse將把測試類編譯到一個單獨的文件夾中,而Bnd將僅看到真實的類。

在OSGi中進行單元測試的好方法是使用片段。 因此,您可以將測試放在一個片段包中,並且不再有此問題。 而且,測試將可以訪問所有類,而不僅是對API的訪問,如果將它們放在一個簡單的包中會是這種情況。

我假設您的測試類包含在jar捆綁文件中(事實並非如此)。 檢查jar文件的內容並修改打包過程以不包含測試類(maven構建不包含src/test/java )。

當使用m2eclipse打包我的項目時,有時我會注意到這種現象,而從命令行運行maven效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM