2011-09-28 84 views
2

依賴解析最近,我拆我的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插件中的錯誤嗎?有什麼辦法可以避免這種奇怪的插件行爲?

+0

這不就是Maven如何工作?除非你使用_reactor_模塊,否則你必須在你的本地倉庫中安裝你的依賴關係。 –

+0

@Thomas但是如果我創建了GWT WAR包,我希望gwt:run中的maven插件使用這個包中包含的庫(它們的最新版本),而不是從庫中獲取它們(因爲'mvn package'不會安裝它們,回購版本可能已過時)。我並不是說從web應用程序WAR中檢索域庫,而只是使用新建的域包。這聽起來很合理,但也許我錯了。 –

+0

如果我能告訴Maven在子模塊上運行目標,但使用「兄弟」子模塊的依賴關係,而不是從回購站中解析它們,我會喜歡它。不幸的是,我還沒有找到如何去做,而且我高度懷疑這根本不可能,而且人們整天都在進行「mvn安裝」。 –

回答