是否有GWT Maven项目结构,不会混淆责任?

Chr*_*utz 5 java gwt maven

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

我来自Java + Flex世界,所以我自然而然地将客户端模块和服务器端模块完全分开.

在深入挖掘最佳实践和深入挖掘的同时,GWT项目的默认配置越来越像是一堆混乱的责任.特别是涉及多模块项目时.

我确实理解,该约定规定服务器端逻辑属于"服务器"包,共享代码位于"共享"中,并且由GWT编译器在"客户端"包中编译为HTML + JavaScript.所有代码都转到src/main/java.到现在为止还挺好.

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

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

/src/
/src/main/
/src/main/java
/src/main/shared
/src/main/gwt
Run Code Online (Sandbox Code Playgroud)

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

如果构建会产生两种类型的工件,那么它会感觉好多了......正常的"jars"包含来自src/main/java和src/main/shared的clases以及第二个"gwt",其中包含类和源src/main/gwt和src/main/shared.

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

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

或者是否存在所有这一切的真正原因,我还没有意识到......或者我只是不得不开始变得肮脏而不是那样的东西?

克里斯

Tho*_*yer 5

我刚才得出了相同的结论,并创建了几个原型来帮助开始:https://github.com/tbroyer/gwt-maven-archetypes(公告).

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


Nic*_*ckJ 3

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

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

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