5

我刚刚开始使用 Maven 作为构建系统进行 GWT 开发。

我来自 Java + Flex 世界,所以很自然地,我拥有完全分离的客户端模块和服务器端模块。

在深入挖掘 GWT 的最佳实践并越来越深入地挖掘的同时,对我而言,GWT 项目的默认配置越来越像是一团糟的责任。特别是在涉及多模块项目时。

我确实明白,约定规定服务器端逻辑属于“服务器”包,共享代码属于“共享”,以及由 GWT 编译器在“客户端”包中编译为 HTML+JavaScript 的东西。所有代码都转到 src/main/java。到目前为止,一切都很好。

无论我如何尝试查看它......对我来说,“客户端”包中的东西只是死代码。即使 java 编译器将其编译为类,这些类也不会在运行时使用,并且只需要在编译阶段向 GWT 编译器提供输入。因此,即使它看起来像 Java,它实际上也不是而且只是看起来像 Java。将这些放在与“实时”代码相同的 jar 中感觉有点脏。

像这样的maven结构不会更有意义:

/src/
/src/main/
/src/main/java
/src/main/shared
/src/main/gwt

并让 java-compiler-plugin 使用 src/main/java 和 src/main/shared 并让 GWT 编译器使用 src/main/gwt 和 src/main/shared?

此外,如果构建会产生两种类型的工件,感觉会好很多……普通的“jars”包含来自 src/main/java 和 src/main/shared 的类和第二个“gwt”,它包含类和源src/main/gwt 和 src/main/shared。

我不会向一些混合的 jar 添加依赖项,但可以决定是否要导入一些 GWT 组件或是否要导入一些服务器端功能。

接下来是 GWT 默认将 xml、资源和其他东西放在 src/main/java ... XML && Resources != Java ;-)

或者这一切有什么真正的原因,我根本还没有意识到……或者我只是不得不开始变得肮脏而不是担心这样的事情吗?

克里斯

4

2 回答 2

5

不久前我得出了同样的结论,并创建了几个原型来帮助入门:https ://github.com/tbroyer/gwt-maven-archetypes (公告)。

那些原型仍然有*.gwt.xml等。into src/main/java,因为 Eclipse 的 Google 插件不支持将它们放在其他任何地方(我听说它已在最近的版本中修复但尚未检查)。

于 2013-02-22T16:08:40.370 回答
3

我还尝试将 GWT 客户端代码与服务器端代码分开。我使用的方法是拥有一个包含 2 个子项目的顶级项目,一个用于服务器端,一个用于客户端。顶级项目有一个 pom.xml,其中包含每个子项目的元素。

客户端项目在 src/main/java 中包含 GWT java 源代码,在 src/main/webapp 中包含其余的 webapp 文件。服务器端项目仅包含服务器端代码。

可能不是最整洁的解决方案,但至少有一个更清晰的分离。

于 2013-02-22T11:40:18.123 回答