我正在使用Maven来构建我的GWT项目。我正在使用Gin生成一些样板代码:
package com.lokur.motd.client.events;
import com.gwtplatform.dispatch.annotation.GenEvent;
@GenEvent
public class EditorChange {
}
但是,当我运行“mvn clean install”命令时,Maven在target/classes/com/lokur/motd/client/events
目录中生成与Gin相关的Java源代码。为什么有.java
个文件进入classes
目录?
我正在使用下面的Maven插件在target/generated-sources
文件夹中生成Java源代码:
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>2.0.5</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/apt</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
在这种情况下,会生成两个EditorChangeEvent.java
个文件:generated-sources
文件夹中的一个;另一个在target/classes/<..package..>
文件夹中。
因此,导致编译失败:
duplicate class:
com.lokur.motd.client.events.EditorChangeEvent
答案 0 :(得分:0)
虽然无法弄清楚“Java源文件”进入“类”目录的原因,但问题在于我们项目支持的GWT版本。 它不支持@GenEvent,因为该项目未配置为使用Gin。因此,手动创建Event和Handler类,而不是依赖Gin的注释。现在,它运作良好。关闭这个帖子。
答案 1 :(得分:0)
问题是org.bsc.maven.maven-processor-plugin和编译器插件正在为不同的文件夹生成(相同)源。解决方案是禁用一个处理器。在我的解决方案中,我禁用了org.bsc.maven.maven-processor-plugin link。