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

时间:2013-02-22 10:54:24

标签: java gwt maven

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

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

在深入挖掘GWT的最佳实践并深入挖掘时,对我来说,GWT项目的默认配置越来越像是一堆乱七八糟的责任。特别是涉及多模块项目时。

我确实理解,该约定规定服务器端逻辑属于" server"包,共享代码"共享"和#34;客户端"中的GWT编译器编译为HTML + JavaScript的东西。包。所有代码都转到src / main / java。到目前为止一切都很好。

无论我如何看待它......对我来说,客户"包只是死代码。即使java编译器将其编译为类,也不会在运行时使用这些类,只需要在编译阶段向GWT编译器提供输入。所以,即使它看起来像Java,它实际上并不像Java那样。把它们放在同一个罐子里面会感觉很脏,而且#34;生活"代码。

像这样的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的clases以及第二个" gwt",其中包含src / main / gwt和src / main / shared的类和源。

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

接下来的事情是GWT的默认设置是将xml,资源和其他内容放在src / main / java ... XML&&资源!= Java; - )

或者是否有一个真正的原因,我还没有意识到......或者我只是不得不开始变得肮脏而不是对这样的东西感到沮丧?

克里斯

2 个答案:

答案 0 :(得分:5)

前一段时间我得出了同样的结论,并创建了几个原型来帮助我们开始:https://github.com/tbroyer/gwt-maven-archetypesannouncement)。

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

答案 1 :(得分:3)

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

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

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