依賴解析最近,我拆我的GWT 2.4的應用程序分成兩個模塊的Maven:域和的webapp。域模塊(根據其名稱)包含域類,webapp包含所有其他GWT相關的東西。 Webapp取決於域名。如這裏所描述多模塊的Maven GWT項目 - 在託管模式問題
一切都幾乎相同: http://mojo.codehaus.org/gwt-maven-plugin/user-guide/multiproject.html
當I(從反應器)運行:
mvn clean package
行家適當地構建應用程序WAR:第一它編譯域,然後web應用,接下來創建可以在tomcat上部署的war文件並且工作正常。 不過,如果我嘗試在託管模式下運行的應用程序:
mvn gwt:run
行家嘗試解決依賴於域模塊在我的本地庫和遠程存儲庫。由於我從本地回購中刪除了它,maven無法找到它並且構建(託管模式)失敗。當然,我可以首先將域名模塊安裝到我的本地回購站中,但它對我來說似乎是一種骯髒的解決方法。 域名已故意從本地maven存儲庫中刪除,以確保託管模式運行時使用從本地回購獲取的舊(過時)版本,而不是使用之前構建的域名域名。
如果域模塊安裝在我的本地庫,完成後mvn clean package
,的webapp目標目錄包含爆炸WAR與最新版本域 JAR的。當我運行gwt:run
時,新版本的域神器(在目標中)被替換爲從本地回購中獲得的過時版本(我可以看到更改)!
這怎麼可能?這是gwt maven插件中的錯誤嗎?有什麼辦法可以避免這種奇怪的插件行爲?
這不就是Maven如何工作?除非你使用_reactor_模塊,否則你必須在你的本地倉庫中安裝你的依賴關係。 –
@Thomas但是如果我創建了GWT WAR包,我希望gwt:run中的maven插件使用這個包中包含的庫(它們的最新版本),而不是從庫中獲取它們(因爲'mvn package'不會安裝它們,回購版本可能已過時)。我並不是說從web應用程序WAR中檢索域庫,而只是使用新建的域包。這聽起來很合理,但也許我錯了。 –
如果我能告訴Maven在子模塊上運行目標,但使用「兄弟」子模塊的依賴關係,而不是從回購站中解析它們,我會喜歡它。不幸的是,我還沒有找到如何去做,而且我高度懷疑這根本不可能,而且人們整天都在進行「mvn安裝」。 –