为什么Gin在“target / classes”目录中生成源文件?

时间:2014-01-24 06:55:46

标签: java maven gwt maven-2 gin

我正在使用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

2 个答案:

答案 0 :(得分:0)

虽然无法弄清楚“Java源文件”进入“类”目录的原因,但问题在于我们项目支持的GWT版本。 它不支持@GenEvent,因为该项目未配置为使用Gin。因此,手动创建Event和Handler类,而不是依赖Gin的注释。现在,它运作良好。关闭这个帖子。

答案 1 :(得分:0)

问题是org.bsc.maven.maven-processor-plugin和编译器插件正在为不同的文件夹生成(相同)源。解决方案是禁用一个处理器。在我的解决方案中,我禁用了org.bsc.maven.maven-processor-plugin link