我有一個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
:聲明模塊model
,logic
,analyze
,gwt
,tests
model
:沒有依賴性logic
:不依賴analyze
:取決於model
,logic
gwt
:取決於model
,logic
tests
:取決於model
,logic
,analyze
,gwt
(包含整體測試, 沒有單元測試)
如果我在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
。
我得到一個'無法解決項目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
你必須依賴於來自webapp模塊的域。 – milan 2011-12-29 17:30:55
我認爲設置了依賴關係,這就是它尋找jar的原因。我正在更新OP。 – djjeck 2011-12-29 19:30:29