2011-04-29 69 views
4

我有一個GWT項目在eclipse具有以下結構的GWT模塊GWT - 包括模塊的封裝層次外源文件

com.foo.gwt -> Dashboard.gwt.xml 
com.foo.gwt.client 
com.foo.gwt.server 

我有不同的套餐com.bar.baz1com.bar.baz2,等我想包括其內容在客戶端代碼中。所有的文件都是GWT JAVA-> JS轉換兼容。

問題是Dashboard.gwt.xml中的<源>標記將路徑視爲相對於目錄Dashboard.gwt.xml。所以我不能參考com.foo.gwt等級以外的任何東西。

所以我在com.bar中創建了一個新模塊MyNewModule.gwt.xml,其中包含baz1baz2子包使用標記中的相對路徑。最後我讓Dashboard.gwt.xml繼承新模塊。

當我編譯儀表板模塊時,這工作正常,但編譯MyNewModule時失敗。 這是因爲MyNewModule中的某些類引用了Dashboard模塊的類。

我試着繼承MyNewModule中的Dashboard模塊。這會創建一個循環引用,但GWT不會抱怨它。一切正常,但我不習慣循環參考。我不需要MyNewModule,我需要的只是一種在Dashboard模塊層次結構中包含代碼的方法。

我想知道爲什麼GWT不允許絕對源路徑。

我在這裏錯過了什麼嗎?

回答

2

你不需要單獨編譯每個模塊。編譯com.foo.gwt項目時,GWT編譯器將查找com.foo.gwt.xml文件中的所有依賴項,並將編譯所有的.java文件,包括com.foo和com.bar.baz。(和其他庫)到JavaScript。

正如您所說的,將MyNewModule.gwt.xml放入com.bar.baz項目並將其「繼承」到DashBoard.gwt.xml文件中是正確的。缺少的部分是使用MyNewModule項目創建一個.jar文件,並將其放入war/WEB-INF/lib文件夾(只是gwt.xml文件和編譯的Java類)。

+0

是的,我注意到了。我有一個沒有明確編譯新模塊的構建腳本,並且一切正常。當我安裝Google Plugin for Eclipse時,它開始自動編譯項目中的每個模塊,這使得我認爲這是一個重要的過程。我不需要jar,因爲我不打算分別使用MyNewModule,它是因爲絕對源路徑不被允許而創建的。 – Dojo 2011-04-29 16:36:58