使用Maven開發OSGi應用程序有兩種主要方法:首先是POM-first和MANIFEST。在使用Maven開發OSGi應用程序時,我應該首先使用POM還是首先使用MANIFEST?
我正在尋找一個表格顯示每種方法的利弊的答案。
更具體地講,我也想知道它是如何涉及到:
- 工具集的成熟度
- 供應商獨立
- 發展方便(包括找人,誰可以做開發所述工具)
- 兼容性
- 避免ClassNotFound的
- 避免手工工作
使用Maven開發OSGi應用程序有兩種主要方法:首先是POM-first和MANIFEST。在使用Maven開發OSGi應用程序時,我應該首先使用POM還是首先使用MANIFEST?
我正在尋找一個表格顯示每種方法的利弊的答案。
更具體地講,我也想知道它是如何涉及到:
目前這是我能想出
POM-第一優點(使用maven-捆插件)
POM-首先缺點
ClassNotFoundException
更可能在運行時發生。但是,這可以通過使用pax考試來緩解(儘管設置起來非常複雜)。instructions
配置元素設置正確。Manifest優先的優點(使用第谷 - Maven的插件)
ClassNotFoundException
的JUnit測試,而不是在運行時出現的工具。Manifest優先的缺點
如果有人問我對於一個已經使用Maven,並希望移動到OSGi的企業的建議那麼這將是POM第一
如果有人問我爲別人的建議是誰做Eclipse插件開發,然後它是首先清單 - 與tycho
有沒有辦法從MANIFEST.MF生成POM依賴關係? – 2017-09-13 16:10:00
MANIFEST首先不鎖定你到Eclipse(雖然我會很驚訝,如果超過一小部分人會使用其他任何東西)。 MANIFEST是重要的文件,需要添加到jar文件中,無論你如何做。另一方面,POM首先將你完全鎖定到Maven,你失去了OSGi包是一個普通的jar的優點,你可以用任何你想要的方式。
我已經試過兩種,我真的首選MANIFEST。 MANIFEST文件是一個非常重要的文件,我更喜歡通過製作生成該文件的文件來製作該文件。如果有些奇怪的事情發生,(它會在某個時候)清單文件是第一個檢查,如果它是你自己的文件,它會更容易。此外,無論如何你都必須熟悉它。所以,如果Maven是你的alpha和omega,POM首先會適合你最好的,但是你仍然需要對MANIFEST文件有深入的理解。
我不能不同意這個立場,因爲它包含了太多重複的信息(例如導入的包),所以生成MANIFEST比手動維護它好得多。關於它非常重要的論點是假的,因爲應用程序中的'.class'文件也非常重要,而且你不會想用手寫這些文件。 – 2012-07-07 09:13:52
有趣。我不反對生成一個MANIFEST文件,我只是說你確實需要熟悉它。通過查看MANIFEST文件可以解決或分析出現在stackoverflow上的許多問題。我從來沒有見過任何人請求字節碼。這兩者確實有不同的作用。無論如何,我期待着你的回答。 – 2012-07-07 09:32:45
是的..你必須知道你的Manifest應該是什麼樣子。當您生成清單時,您仍然需要檢查它是否正常工作,但是您的手動工作量要少很多。所以我也支持產生Manifest。 – 2012-07-19 14:11:55
我想你應該選擇用例。對於服務器端OSGi項目,我喜歡pom的第一種風格。它很好地匹配了Maven構建,並且比Manifest更容易出錯。 事實上,在maven bundle插件後面的bnd在大多數情況下獲得Manifest權限,而無需任何額外的配置。訣竅是使用一些命名規則。例如,如果您命名內部包impl或內部,則不會導出。使用這種風格你不能使用Eclipse插件透視圖(至少沒有我不喜歡的bndtools),但我還沒有錯過這個觀點。我是Apache Karaf,CXF和Camel項目的開發人員,我們使用這種風格並且效果很好。特別是對於CXF和Camel,我們可以使用相同的構建和工具來支持OSGi和非OSGi部署。
對於Eclipse RCP應用程序首先清單是您需要插件透視圖和Eclipse IDE工具的方式。如果你想把它和maven結合起來,那麼tycho可能就是要走的路。
我發現確切的事情是一樣的。我也用兩種方法開發,並在適當的時候繼續這樣做。這就是爲什麼我們使用Tycho作爲我們的RCP代碼的原因,所以我們仍然可以使用maven,但是通過使manifest成爲王者,它可以讓Eclipse更容易地開發RCP。 – Robin 2012-07-09 13:41:16
謝謝,你的結論與我的結論相符,其實你的結論就是我在寫這個問題之前所想的。問題的原因是要列出每個人的利弊,以便我必須證明爲什麼我選擇了一個。 – 2012-07-19 05:09:13
「我們在這裏播放兩種音樂...國家*和*西方。」換句話說,你已經提出了一個錯誤的二分法,並且有比「首先POM」和「首先MANIFEST」更多的選擇。特別是你看過Bndtools IDE嗎? – 2012-07-07 09:15:35
這個問題顯然屬於徵求辯論和爭辯的範疇,應該關閉。 – Robin 2012-07-09 13:42:39
我只知道處理這個問題的兩種方法:maven-bundle-plugin和tycho-maven-plugin。我正在將Eclipse插件轉換爲使用Tycho,所以我有一個「真正」的理由來使用它。我的參考OSGi應用程序不是基於Eclipse的使用Felix。到目前爲止,我在使用Tycho時看到了更多的缺點。 – 2012-07-17 10:30:00