![](/img/trans.png)
[英]Handling non-OSGi dependencies when integrating Maven, Tycho and Eclipse
[英]Adding test-only dependencies for non-OSGi JUnit test in a Tycho project
我有幾個OSGi-bundle,我用Eclipse Tycho構建。 所有代碼依賴關系都是先清除管理的。
現在我想開發一些純JUnit-Tests來測試bundle-internal功能。 這些測試不需要OSGi容器來執行,但它們確實需要Mockito。
顯然,只有在運行非OSGi測試時才需要Mockito,而不是在捆綁包本身執行期間,將依賴項添加到MANIFEST.MF文件是錯誤的。
我目前的方法是添加一個包含mockito.jar的項目/ lib文件夾,並將此jar手動添加到他的類路徑中。 這適用於本地eclipse執行,暫時沒問題。
問題是,每個同事都需要將jar添加到類路徑中,因為.classpath文件顯然沒有簽入。另外,我猜測試最終將在例如構建時執行時會出現問題服務器,因為缺少類路徑條目。
所以我的問題是:如何以對每個同事輕松工作的方式向Mockito添加依賴關系,並且在捆綁執行期間不會導致任何問題?
我可以將它作為可選依賴項添加到MANIFEST.MF文件中,但如上所述,它並不像是正確的解決方案。
我可以將mockito-dependency作為正常的pom-first依賴項添加到范圍test
還是會導致與正常的manifest-first方法沖突?
我還發現了maven-eclipse-plugin
,它提供了一個classpathContainers
配置選項,但我沒有找到類似的選項來將類庫添加到類路徑中。
測試位於包本身的src / test / java文件夾中。
將測試依賴項添加到使用eclipse Tycho構建的項目的最佳方法是什么,因為我在技術上不需要Tycho來執行這些測試?
如果您可以使用完全僅由Maven依賴項構成的類路徑(例如,向Mockito)運行測試,那么您還可以為這些測試創建一個帶有jar
包裝的模塊。 從該模塊中,您還將向該bundle添加一個依賴項,然后將其用作普通JAR。
在這種情況下你放松的是傳遞依賴的解決方案。 然后,Maven會解析jar
項目,而Maven不知道OSGi包的Manifest依賴關系。 但是,根據您要測試的確切性質,這可能仍然有效。
通常,您會在單獨的包中看到測試,它具有自己的清單和依賴項。 這不是標准的Maven結構,但它更適合OSGi包的結構。
例如,查看JDT-core git存儲庫 ,您將看到單獨的測試包。 請注意,測試包具有特殊的packaging-type
的eclipse-test-plugin
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.