如何使用GWT -maven-plugin编译测试源中包含的GWT模块



我试图运行GWT编译与maven通过插件: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阶段?而不是目标"编译"我尝试了目标"测试"(test-compile似乎不起作用,maven说它无法在p插件中找到目标),但也没有运气…

我使用的插件版本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>

插件不提供此功能。正如你所指出的,如果它做到了,它(可能)是一个testCompile目标。

有几种方法可以做到这一点:

  • 使用单独的Maven模块,如您所注意的
  • 使用maven-invoker-plugin在构建期间启动Maven模块,其源包含在模块本身中(而不是在反应器构建中作为单独的模块)
  • 使用GWTTestCase,其getModuleName()返回com.total.GwtTotalTest ,您运行gwt:test, productionMode设置为true(以便模块将在任何测试方法运行之前编译)。

相关内容

  • 没有找到相关文章

最新更新