聲明:我是org.codehaus.mojo
插件的前維護者,也是net.ltgt.gwt.maven
之一的作者。
這些插件與使用Maven的GWT有很不同的方法;我會盡力在這裏總結最重要的。
首先,org.codehaus.mojo
與特定版本的GWT綁定;這意味着只要發佈新版本的GWT來解決差異,就必須發佈新版本的插件。另一方面,它使用Maven文檔(mvn gwt:help
)等將所有GWT選項/標記公開爲配置屬性。當插件中的bug被修復時,這也意味着你必須更新你的GWT版本以匹配下一個插件版本使用的版本;雖然你應該始終使用最新的GWT版本,但由於其他依賴項與新版本不兼容等原因,可能無法快速更新,因此您可能處於「版本衝突地獄」中。
net.ltgt.gwt.maven
插件旨在與最新版本的GWT兼容,但很可能與更多兼容(它只是未經測試/保證);這意味着你可以獨立於GWT更新插件。
org.codehaus.mojo
插件帶來了gwt-dev
和gwt-user
(和gwt-servlet
!)的依賴關係,如果不是嚴格相同的話,這可能會導致與項目依賴項的依賴項發生衝突;另外,由於Maven的工作原理,如果您在不同的groupId
下使用您自己的GWT版本的GWT,則無法將它們從插件的依賴項中排除(您必須使用com.google.gwt
groupId
,或者讓插件改變它的依賴性) 。
net.ltgt.gwt.maven
插件自定義packaging
s代表gwt-lib
和gwt-app
。關於如何使用Maven完成GWT應用程序,我們非常自信:將客戶端和服務器(以及共享)代碼分離成單獨的Maven模塊(這實際上是遵循Maven Way™的:如果您需要單獨的類路徑,那麼您需要使用不同的Maven模塊,每個都有它們的依賴關係)。您當然不會被迫使用這些容器,他們只是通過設置適當的默認值和約定來削減POM中的相當多的配置。
最後,因爲在「項目佈局」即上述固執視圖中,net.ltgt.gwt.maven
插件被設計爲支持多模塊(又名反應器)構建,這違背了org.codehaus.mojo
插件,其中,例如,gwt:run
必須是運行一個客戶端和服務器代碼都「活着」的項目;導致在多模塊構建中出現可怕的黑客攻擊,如不得不mvn install
所有依賴項模塊(因爲不能在聚合器模塊上調用gwt:run
)並使用build-helper-maven-plugin
從其他模塊引入客戶端源以獲得無縫的開發體驗。
你可以看到插件之間的差異this commit在GWT-Maven的原型(免責聲明:我是作者)從org.codehaus.mojo
切換到net.ltgt.gwt.maven
插件。
它們只是由不同供應商提供的兩種不同的插件。這兩個項目在寫作時似乎都很活躍。關於一個人是否比另一個人好的討論並不真正與SO有關。 – Mena