GWT编译时间性能改进

时间:2012-09-04 06:07:43

标签: gwt compilation performance

我们在当前项目中使用GWT 2.4版。在服务器端,我们正在使用Spring&自定义JDBC框架。

我们使用Maven作为构建工具。该应用程序已部署在JBOSS 7服务器上。

目前,我们在一个Eclipse项目中拥有所有内容。表示一个Application.gwt.xml文件和一个Spring的ApplicationContext.xml。我们有大约2000个Java文件,其中大约1500个用于GWT相关的源文件。

项目仍在增长,有更多的源文件。

我们对Java到Javac [类文件]编译时的时序很好。但是当谈到Java到JavaScript时,这是一个问题。

我们使用了GWT论坛中提到的所有黑客。

像。

  1. 仅针对一个本地
  2. 进行编译
  3. 仅针对一个浏览器进行编译
  4. 但是编辑仍需要4-6分钟......或者甚至是7分钟。

    有了这个问题,我想知道可以改进相同的选项。

    我们正在考虑以这种方式拆分项目:

    • 第1单元(JAR Build)
    • 第2单元(JAR Build)
    • 模块主要(WAR Build)。这将包含Application.gwt.xml文件 这将继承模块1和第2单元。

    现在问题来了:

    1)这有助于我们改善编译时间吗?

    2)如果我们只改变模块2然后编译Module Main,那么GWT仍会编译模块1,因为它是由Module Main继承的吗?

    请分享您对上述情况的看法。我们甚至尝试过GWT 2.5选项,但在性能改进方面没有帮助。

    谢谢,Niraj Salot。

1 个答案:

答案 0 :(得分:1)

我将首先回复您的第二个问题,因为它不是特定于GWT的。考虑到您的项目是这样构建的:

project-root    
  |- module1 (jar)
  |- module2 (jar)
  L moduleMain (gwt + war)

如果您在module2中进行了一些更改,并且不想重新编译module1,则可以使用选项-pl将其从构建过程中跳过(命令从project-root启动mvn clean install -pl module2,moduleMain 文件夹):

module2

这将重新编译moduleMain,然后重新编译module1,而无需重新编译module1

这有助于我们改善编译时间吗?

这取决于module2moduleMainmoduleMain相比有多大......但我对GWT的经验是,通常花费大量时间将java客户端代码编译成JavaScript的。此操作仍在您的gwt-maven-plugin中进行,因此我认为将项目拆分为多个模块并不足以显着缩短编译时间。

此外,我建议您使用一个配置文件来控制moduleMainmoduleMain的激活/停用。

<profiles> <profile> <id>GWTBuild</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>2.4.0</version> <executions> <execution> <goals> <goal>compile</goal> <goal>generateAsync</goal> <goal>test</goal> </goals> </execution> </executions> <configuration> <runTarget>com.yoururlroot/index.html</runTarget> </configuration> </plugin> </plugins> </build> </profile> </profiles> 的pom.xml中,将GWT插件移动到配置文件中,这样:

module2

然后,如果你只是想重建你的战争,因为module1已经改变但没有重建mvn clean install -pl module2,moduleMain -P!GWTBuild 并且没有重新编译所有GWT的东西,只需启动:

{{1}}

在此命令中,GWT插件已停用,因此maven将仅重建战争。

告诉我这是否适合你。

相关问题