我正在使用 Java RPC 服务在我的 GWT 应用程序中的服务器端和客户端之间进行通信。我不想从我的版本控制中删除异步接口,因为它是项目编译和运行所必需的。
但是,Async 接口是由 Maven 插件在 target/generated-sources 文件夹中自动生成的(与 Messages 类一起),并且当应用程序尝试运行时出现重复类错误。
有人知道如何禁用异步 RPC 接口的自动生成吗?
我正在使用 Java RPC 服务在我的 GWT 应用程序中的服务器端和客户端之间进行通信。我不想从我的版本控制中删除异步接口,因为它是项目编译和运行所必需的。
但是,Async 接口是由 Maven 插件在 target/generated-sources 文件夹中自动生成的(与 Messages 类一起),并且当应用程序尝试运行时出现重复类错误。
有人知道如何禁用异步 RPC 接口的自动生成吗?
我通过以下问题找到了答案:
如何配置 IntelliJ IDEA 和/或 Maven 以使用 jaxb2-maven-plugin 生成的 Java 源代码自动添加目录?
然后查看 Mojo 网站上的 Maven GWT 插件:
http://mojo.codehaus.org/gwt-maven-plugin/user-guide/async.html
...所以生成代码的不是 IDEA,而是 GWT Maven 插件。我通过在我的 pom 中注释掉以下两行来禁用 Async RPC 和 i18n 消息接口的自动生成:
<goal>i18n</goal>
<goal>generateAsync</goal>
所以 pom.xml 中的插件定义现在看起来像:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
<!--<goal>i18n</goal>-->
<!--<goal>generateAsync</goal>-->
</goals>
. . .
问题就解决了。
实际上评论你的 POM 并不是最好的方法。我不了解 IDEA,但使用 Eclipse“运行配置”,您可以指定要执行的目标。我猜 IDEA 一定有类似的东西(见链接)。
例如,我会有两个不同的跑步者。一个有目标的人
gwt:generateAsync gwt:i18n gwt:css
一个没有具体目标的,它将执行一个完整的构建。
clean install
在您的情况下,您希望拥有
gwt:compile gwt:test
但是,如果您从不想执行 gwt:generateAsync 目标,则将其删除可能是一个不错的选择。