我刚刚开始使用 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 ;-)
或者这一切有什么真正的原因,我根本还没有意识到……或者我只是不得不开始变得肮脏而不是担心这样的事情吗?
克里斯