1

我正在尝试通过插件使用maven运行GWT编译:gwt-maven-plugin,但是GWT模块包含在测试源路径中,即:src/test/java。插件抱怨它找不到 GWT 模块。

但是,当使用 GWT 类 DevMode 通过 Eclipse 启动文件使用该模块时,该模块可以正常工作。为什么 gwt maven 插件找不到 GWT 模块?

该项目包含 2 个 Gwt 模块,主源中包含 1 个 GwtTotalProd,测试源中包含 GwtTotalTest。gwt maven 插件能够构建 GwtTotalProd,但不能构建 GwtTotalTest,为什么(两者都通过 Eclipse 启动文件运行良好)?我尝试在构建 pom 中包含测试源(见下文),但没有运气。

查看 maven 调试输出(-X 开关),我可以理解它找不到它,因为 GWT SDK 执行包含 src/main/java,但不包含 src/test/java,它不包括依赖项在插件中定义。那么如何告诉插件在测试源路径中查找呢?

我可以通过在主源代码中创建一个包含 GwtTotalTest 的附加“测试/开发”项目来做到这一点(我为其他项目这样做),但在这种情况下,它是不需要的,因为它是一个只有 Gwt 的空项目配置文件 ;)... 或者我应该将它绑定到另一个 Maven 阶段?而不是目标“编译”我尝试了目标“测试”(测试编译似乎不起作用,maven说它在他的p lugin中找不到目标),但也没有运气......

我正在使用插件版本 2.7.0 和配置 maven:

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <id>TotalProd</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <module>com.total.GwtTotalProd</module>
                        <mode>htmlunit</mode>
                        <draftCompile>false</draftCompile>
                        <disableClassMetadata>true</disableClassMetadata> 
                        <compileReport>true</compileReport>
                        <warSourceDirectory>${gwt.war}</warSourceDirectory>
                        <webappDirectory>${gwt.output.total}</webappDirectory>
                        <gen>${gwt.output.total}/${gwt.gen}</gen>
                        <extra>${gwt.output.total}/${gwt.extra}</extra>
                        <fragmentCount>8</fragmentCount>
                        <extraJvmArgs>-Xms1G -Xmx1G -Xss1024k -Dgwt.persistentunitcache=false</extraJvmArgs>
                    </configuration>
                </execution>
                <execution>
                    <phase>compile</phase>
                    <id>TotalTest</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <module>com.total.GwtTotalTest</module>
                        <mode>htmlunit</mode>
                        <draftCompile>false</draftCompile>
                        <disableClassMetadata>true</disableClassMetadata> 
                        <compileReport>false</compileReport>
                        <warSourceDirectory>${gwt.war}</warSourceDirectory>
                        <webappDirectory>${gwt.output.total.test}</webappDirectory>
                        <gen>${gwt.output.total.test}/${gwt.gen}</gen>
                        <extra>${gwt.output.total.test}/${gwt.extra}</extra>
                        <fragmentCount>8</fragmentCount>
                        <extraJvmArgs>-Xms1G -Xmx1G -Xss1024k -Dgwt.persistentunitcache=false</extraJvmArgs>
                        <dependencies>
                            <dependency>
                                <groupId>com.company.gwt</groupId>
                                <artifactId>total-gwt</artifactId>
                                <version>${version.gen}</version>
                                <classifier>test-sources</classifier>
                            </dependency>
                            <dependency> 
                                <groupId>com.company.gwt</groupId>
                                <artifactId>total-gwt</artifactId>
                                <version>${version.gen}</version>
                                <type>test-jar</type>
                            </dependency>
                        </dependencies>
                    </configuration>
                </execution>
            </executions>
        </plugin>
4

1 回答 1

2

The plugin doesn't provide this feature. As you noted, it would (probably) be a testCompile goal if it did.

There are several ways to do that though:

  • use a separate Maven module, as you noted
  • use the maven-invoker-plugin to launch a Maven module during the build, whose sources are contained within the module itself (rather than being a separate module in the reactor build)
  • use a GWTTestCase whose getModuleName() returns com.total.GwtTotalTest and you run with gwt:test with productionMode set to true (so that the module will be compiled before any test method run).
于 2015-08-30T14:09:23.977 回答