2011-12-29 43 views
2

我有一個multimodule maven安裝程序,用於我的項目,由5個模塊組成,其中包括一個GWT webapp。
它也是一個eclipse多項目工作區,所以我創建了一個額外的項目,只包含一個pom,它將其他項目(同級文件系統中的其他項目)列爲子模塊。
我也是一個新的maven用戶,所以我可能做錯了什麼。 =)多項目GWT託管模式maven安裝

GWT的模塊使用以下插件

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>gwt-maven-plugin</artifactId> 
<version>2.4.0</version> 
<executions> 
    <execution> 
     <goals> 
      <goal>generateAsync</goal> 
      <goal>compile</goal> 
     </goals> 
    </execution> 
</executions> 
<configuration> 
    <hostedWebapp>war</hostedWebapp> 
    <runTarget>GWT.html</runTarget> 
</configuration> 
</plugin> 

當我在聚甲醛項目,我得到預期的行爲運行mvn package:項目是建立在正確的順序,戰爭是罰款。
但是,當我運行mvn gwt:run時,maven試圖在每個模塊上找到一個gwt應用程序,在沒有聲明或管理gwt插件的第一個(父級)上失敗。
如果我運行mvn -fn gwt:run,則構建在每個其他項目上都失敗,最後在gwt模塊上找到gwt應用程序並顯示它。

  • 如何在託管模式下正確運行應用程序?這是正確的行爲?

我不希望GWT模塊是父模塊(如果可能的話),因爲該項目有多個目標平臺,生成gwt Web前端,Java可執行jar後端,以及未來還有Android應用程序,並共享代碼的大部分內容(不僅僅是模型)。爲這樣的設置推薦一個單獨的pom結構,還是我在maven中失敗?

簡介我需要什麼?如果我這樣做,我應該在每個模塊上聲明相同的配置文件ID嗎?我怎麼會阻止他們觸發gwt:run命令呢?

  • 這樣的項目應該是什麼樣的設置?這是正確的設置?

附加信息

模塊是

  • pom:聲明模塊modellogicanalyzegwttests
  • model:沒有依賴性
  • logic:不依賴
  • analyze:取決於modellogic
  • gwt:取決於modellogic
  • tests:取決於modellogicanalyzegwt(包含整體測試, 沒有單元測試)

如果我在gwt模塊上運行gwt:run,我得到錯誤

Could not resolve dependencies for project 
djjeck.gwt:djjeck.gwt:war:0.0.1-SNAPSHOT: 
Could not find artifact djjeck.model:djjeck.model:jar:0.0.1-SNAPSHOT 

這是djjeck.gwt/pom.xml

<dependency> 
    <groupId>djjeck.model</groupId> 
    <artifactId>djjeck.model</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <scope>compile</scope> 
</dependency> 

一個com.model-0.0.1-SNAPSHOT.jar是戰爭lib文件夾裏面,無論包裝和解壓,也內djjeck.model/target

回答

3

轉到webapp模塊,然後運行mvn gwt:run

您可以使用配置文件加快編譯時間:例如,一個配置文件只能gwt編譯爲gecko和english + draftCompile。

看看maven GWT插件multi-module setup如果你仍然有問題。

+0

我得到一個'無法解決項目djjeck.gwt的依賴關係:djjeck.gwt:war:0.0.1-SNAPSHOT:找不到 artifact djjeck.model:djjeck.model:jar:0.0.1-SNAPSHOT' 。該jar既在該項目的目標文件夾內,也在war的lib文件夾內。它在哪裏尋找它? – djjeck 2011-12-29 16:16:48

+0

你必須依賴於來自webapp模塊的域。 – milan 2011-12-29 17:30:55

+0

我認爲設置了依賴關係,這就是它尋找jar的原因。我正在更新OP。 – djjeck 2011-12-29 19:30:29

1

由於我還在使用GWT dev模式和帶有多個子模塊/項目的Maven項目,我創建了一個示例並將其上載到GitHub。你可以找到它:

https://github.com/steinsag/gwt-maven-example

aboves頁面上的自述展示瞭如何通過Maven的運行它。這個例子的特點是:

  • 多個模塊
  • 沒有使用GWT的嵌入式碼頭,而是自己Tomcat7服務器
  • 啓動Tomcat7和GWT的通過記錄Maven的託管模式下可以命令

我希望這有助於至少有一個工作的例子,從一開始。