要使用諸如javac之類的工具從源代碼生成包,您需要爲其提供線性類路徑。不幸的是,它不會在某些情況下,從一個角度OSGi的點工作仍完全合法:javac是否足以構建OSGi包?
依賴與他們嵌入JAR;
不同依賴包含的相同包。
因爲javac不理解OSGi元數據,所以我不能簡單地只是在類路徑中的依賴關係。更好的包裝紋理方法似乎是必要的。
在自動化過程(持續集成)中使用OSGi的人如何解決這個問題?奇怪的是,Web上有很多關於如何創建bundle JAR(創建元數據,創建JAR)的資源,前提是您需要將類/內部JAR放入其中,但關於如何實際獲取這些類的信息很少。
讓我們舉個例子:我的包需要兩個其他包來編譯,它們都包含Xerces作爲嵌入式JAR,但是包含兩個不同和不兼容的版本。這不是一個問題,因爲只有其中一個導出一些xerces包,我的包依次導入。也許不是一個很乾淨的情況,但是可以在OSGi容器中「有法可依」地發生的事情沒有問題。
現在,我該如何編譯它?我不能把這兩個依賴關係放在我的類路徑中(javac中不會找到嵌入的Xerces JAR),我也不能將它們弄平(兩個版本的Xerces會發生碰撞,也許沒有導出的將是第一個) 。如果ony解決方案是在包級別創建「classpath」,而不是完整的包級別,則javac根本不可用。
也許我錯了,但創造了應付的OSGi(m2eclipse的或來自菲利克斯一個)Maven插件仍然依靠的javac到底,給它一個線性的classpath喂上。 – Chatanga 2010-04-25 12:35:11