我有一個項目具有多個gwt模塊,其中一個模塊是沒有其他模塊從中繼承的入口點的庫模塊。所有模塊都包含在使用maven和gwt-maven-plugin構建的單個項目中。不幸的是,構建項目失敗了,因爲gwt:compile在編譯繼承它的主模塊時正在尋找類路徑上的繼承模塊。如何在類路徑上獲取庫模塊以編譯主模塊?GWT獲取編譯器類路徑上的繼承模塊
回答
好的,我可以通過在項目的pom文件的gwt-maven-plugin配置中明確列出我的GWT模塊來解決這個問題。通過這樣做,我可以執行GWT編譯的順序,確保共享模塊首先被編譯,並在其編譯期間從其繼承的其他模塊可用。
下面是配置的一個例子:
<configuration>
<modules>
<module>com.foo.gwt.shared.Shared</module>
<module>com.foo.feature.one.gwt.One</module>
<module>com.foo.feature.two.gwt.Two</module>
</modules>
</configuration>
感謝Jason482所有幫助。
你需要做一些有創意的「Maven-ing」,因爲我只是用這個詞來形容它。 (實際上它可能根本就沒有創意,但我自己也是一個Maven新手,所以它也讓我困惑了一段時間)。
你說得對在一定意義上,GWT comipler 是尋找繼承模塊在classpath源當它試圖編譯你的「主」模塊。爲了達到這個目的,你需要在庫模塊的源文件中添加一個依賴項(主要用於編譯階段)。
事情是這樣的:
...
<artifactId>main-module</artifactId>
...
<dependency>
<groupId>library-group</groupId>
<artifactId>library-artifact</artifactId>
<type>jar</type>
<version>0.1-SNAPSHOT</version>
<classifier>sources</classifier>
<scope>compile</scope>
</dependency>
...
現在,你來自哪裏得到這些來源可能不同。如果你只是想從IDE這樣做,就像Eclipse一樣,這可能就足夠了,因爲m2eclipse插件足夠聰明,可以知道從哪裏獲取這些源代碼(如果庫模塊也在工作區中)。如果這是您的實際構建過程,那麼您將需要修改庫模塊的pom以生成源文件以及標準的「庫文物」。所以,你既結束了:
library-artifact-0.1-SNAPSHOT.jar
和
library-artifact-0.1-SNAPSHOT-sources.jar
希望它更清楚這一點上GWT-Maven的插件收益如何。
差不多忘了,我在這裏回答的其他問題也可能有些用處:GWT Project Structure。
我寧願對上面的答案發表評論,但我沒有足夠的代表來做到這一點。所以我在這裏發佈我的發現。
Jason482的回答爲我工作。添加:
<classifier>sources</classifier> <scope>compile</scope>
和每一個子模塊的依賴性,反應器內的POM,解決了我的問題。
mreynolds的解決方案是將GWT模塊引用添加到主pom文件的gwt-maven-plugin配置中,似乎只有在GWT子模塊中有其他入口點時才需要。我沒有,所以這一步對我來說沒有必要。
- 1. GWT - 問題繼承模塊
- 2. 繼承非gwt模塊
- 3. GWT模塊和繼承
- 4. 繼承GWT模塊中的rt.jar源碼
- 5. 如何在編譯時獲取所有繼承類的類型?
- 6. 如何從繼承的方法獲取派生類的路徑?
- 7. 在PHP中獲取繼承類的路徑名
- 8. 在IntelliJ上編譯GWT模塊
- 9. 編譯類路徑
- 10. 繼承的模板類中的C++編譯器錯誤
- 11. 類繼承和Ruby模塊
- 12. 跨模塊繼承類?
- 13. 獲取模塊路由引入路徑
- 14. GWT:我可以重寫繼承模塊的某些Java類嗎?
- 15. 獲取python中模塊的路徑
- 16. Durandal,獲取當前模塊的路徑
- 17. 繼承程序獲取編譯器錯誤58
- 18. Xcode編譯器的路徑?
- 19. jersey:可能從父類繼承路徑
- 20. Java,用Runtime.exec繼承類路徑()
- 21. GWT類繼承接口
- 22. 從其他ZF2模塊獲取路徑
- 23. GWT編輯器編程設置路徑
- 24. 在Postharp編譯期間獲取項目路徑/輸出路徑
- 25. 取出後GWT繼承模塊從gwt.xml GWT仍然試圖加載它
- 26. 模塊或繼承?
- 27. Lua模塊繼承
- 28. Codeigniter類模塊之間的繼承(wiredesigns)
- 29. 獲取類名稱+繼承
- 30. gwt編譯錯誤:你忘了繼承一個必需的模塊嗎? - 服務器端
感謝您的回覆。關於我們的情況的一些額外說明:我們確實在使用Eclipse,並且目前已將我們的應用程序設置爲單個Eclipse項目。在這個項目中,我們有幾個gwt模塊構成了我們應用的不同領域。讓另一個無入口點模塊爲其他模塊繼承共享資源是有道理的。我們認爲這需要我們爲我們的應用程序建立一個新的項目,而這正是我們所描述的。但是,有沒有辦法在主項目中找到資源模塊? – mreynolds0404 2011-06-15 19:24:57
啊,最初我錯過了「單一項目」的一部分。事實上,我正在描述一個單獨的項目/神器。但是,您應該可以像在其他GWT模塊之間設置繼承一樣來執行此操作。 GWT模塊A的gwt.xml,你會得到「 」,其中模塊B是你的共享GWT模塊(帶有gwt.xml文件,但入口點 - 更少,如果你想)。現在,GWT編譯器很容易找到B的源代碼,因爲它們都在同一個Eclipse項目中。你有沒有嘗試在(-X)上打開Maven調試堆棧跟蹤? –
Jason482
2011-06-16 19:03:14