我created a library bundle for commons-lang3
,這工作得很好。我可以構建這個包,添加一個依賴關係,然後在我的插件中使用這個包中的所有類。如何在OSGi/Equinox/Eclipse中附加庫包的源代碼?
但我沒有在調試器中看到源代碼。
什麼是最簡單的方法來創建此庫包的源包?
PS:庫包是一個包含原始JAR文件的插件; Eclipse不會再次編譯源代碼,它只是將現有的JAR添加到類路徑中。
我created a library bundle for commons-lang3
,這工作得很好。我可以構建這個包,添加一個依賴關係,然後在我的插件中使用這個包中的所有類。如何在OSGi/Equinox/Eclipse中附加庫包的源代碼?
但我沒有在調試器中看到源代碼。
什麼是最簡單的方法來創建此庫包的源包?
PS:庫包是一個包含原始JAR文件的插件; Eclipse不會再次編譯源代碼,它只是將現有的JAR添加到類路徑中。
如果您將源文件添加到他們自己的jar中,則使用指定庫包的符號名稱的'Eclipse-SourceBundle'條目創建META-INF/MANIFEST.MF文件。下面是一個例子,我從菲利克斯罐子有:
Manifest-Version: 1.0
Eclipse-SourceBundle: org.apache.felix.main;version="4.0.1";roots:="."
Bundle-Version: 4.0.1
Bundle-Name: Apache Felix Framework
Bundle-ManifestVersion: 2
Bundle-Vendor: The Apache Software Foundation
Bundle-SymbolicName: org.apache.felix.main.source
爲了能夠查看Eclipse中的源確保這個源罐子是在你的PDE目標(Windows的>首選項>插件開發 - >上投放) 。如果您將Eclipse本身用作目標平臺,只需將其放入您的eclipse插件文件夾即可。
您可以在包的OSGI-OPT/src
路徑下包含源代碼;那麼他們會被Eclipse調試器看到(不知道其他IDE,因爲我只使用Eclipse)。我發現這比創建單獨的源代碼包簡單得多,因爲一個人工製品比兩個人更容易管理,如果您使用Bnd或Bndtools構建,我們默認會創建類似此類的包。
在極少數情況下,當您需要部署到資源受限的環境時,您可以簡單地從該軟件包中刪除OSGI-OPT
目錄;此名稱是可選數據的約定,可以在不影響捆綁包操作的情況下將其刪除。
順便提一下,我們的方法受到UNIX可執行文件(通常包含額外的調試符號)和strip命令的啓發,該命令會在需要時刪除它們以創建較小的可執行文件。
只是爲了確保我正確理解你的意思:它足以將源JAR解壓並將文件複製到文件夾「OSGI-OPT/src」中?我不必將文件夾添加到'build.properties'或'MANIFEST.MF'? – 2012-03-16 09:54:09
是的,如果你碰巧使用了bnd,只需要添加-sources:true – 2012-03-16 15:39:11
如果在pom.xml中使用maven-bundle-plugin,請執行<_sources> true。還要確保你已經設置
所以我需要創建一個*第二個*包,我不能簡單地將源添加到庫包? – 2012-03-15 14:06:41
我只見過它做爲2捆,這對我來說很有意義,因爲你通常不想在完成的應用程序中部署源代碼。您可以將源代碼和'Eclipse-SourceBundle'條目添加到您的庫包中,但我沒有嘗試過。 – 2012-03-15 14:16:47
@NickWilson實際上,我通常希望在完成的應用程序中部署源代碼。這樣做有很多好處,如果我正在構建一個封閉源代碼的商業應用程序,我只會*不*這樣做。請參閱下面的答案,以便將源代碼包含在主包中。 – 2012-03-16 00:52:30