我有一个maven多模块项目。其中一个模块(编译为 .jar
)仅包含域对象,这些对象将在客户端和服务器端使用(我将此.jar
添加为其他模块的依赖项)。
我知道GWT模块,其中将使用共享.jar
的对象,也必须具有源文件才能成功编译。所以我试图在我的pom.xml
中添加两者:
<resources>
<resource>
<directory>src/main/java/<path></directory>
<includes>
<include>**/*.java</include>
<include>**/*.gwt.xml</include>
</includes>
</resource>
</resources>
和
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<versionRange>[${gwt.version}]</versionRange>
<goals>
<goal>resources</goal>
</goals>
<plugin>
但生成的.jar
不包含 GWT 模块源(即 gwt.xml
)。域类的所有源代码也被添加(在.jar
的根目录中),但ModuleName.gwt.xml
没有。
问题出在哪里?谢谢。
如果您的.gwt.xml
文件在src/main/resources/
中,那么如果您指定src/main/java/
作为资源路径,它就不会被复制......
您可能应该省略<resource>
部分,让 GWT 插件将源代码包含在 jar 中,或者至少有两个部分,一个用于.gwt.xml
文件(src/main/resources
或您放置它的位置),另一个用于源代码(就像您现在拥有的那样)。
干杯
我今天正在解决此错误,所以我只是发布我的修复程序:
使用 maven gwt 插件构建的多模块 gwt 项目需要在 pom 中有一个条目.xml例如:
<modules>
<module>../theothermodule</module>
</modules>
为了编译。
此错误有多种解释。检查清单:
- 如果要引用 GWT 模块,则需要以点表示法指向不带文件扩展名的
*.gwt.xml
文件。 例如com.example.ThirdParty
指com/example/ThirdParty.gwt.xml
模块 - 要导入第三方模块,请将
<inherits name="com.example.ThirdParty" />
添加到*.gwt.xml
文件中 ThirdParty.gwt.xml
应包含一个或多个指向可翻译代码的source
元素。 例如<source path='shared' />
.ThirdParty.jar
中的所有可翻译代码都需要包含纯文本*.java
源。 例如com/example/shared/Widget.class
和com/example/shared/Widget.java
都存在ThirdParty.jar
位于您的类路径上
笔记:
- 如果
ThirdParty
GWT 模块没有入口点,则不需要使用 GWT 编译器进行编译 - GWT 编译器不需要额外的配置来包含
ThirdParty
模块,只要它的 jar 在类路径上并且您的*.gwt.xml
继承ThirdParty.gwt.xml
;这同样适用于 GWT Maven 插件