0

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

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

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

随着源文件的增多,该项目仍在增长。

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

我们已经使用了 GWT 论坛中提到的所有 hack。

喜欢。

  1. 只为一个本地编译
  2. 只为一个浏览器编译

但是编译仍然需要 4-6 分钟。有时甚至需要 7 分钟。

有了这个问题,我想知道可用于改进的选项。

我们正在考虑像这样拆分项目:

  • 模块 1(JAR 构建)
  • 模块 2(JAR 构建)
  • 主模块(WAR 构建)。这将包含继承模块 1 和模块 2 的 Application.gwt.xml 文件。

现在问题来了:

1)这会帮助我们改善编译时间吗?

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

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

谢谢,尼拉吉·萨洛特。

4

1 回答 1

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以及与之module2相比moduleMain......但我对 GWT 的经验是,通常花费大量时间将 java 客户端代码编译成 javascript。此操作仍然发生在您moduleMain的 .

此外,我建议您使用一个配置文件来控制gwt-maven-plugin内部的激活/停用moduleMain

moduleMainpom.xml 中,将 GWT 插件移动到配置文件中,这样:

<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>

然后,如果你只是想重建你的战争,因为module2已经改变但没有重建module1和重新编译所有 GWT 的东西,只需启动:

mvn clean install -pl module2,moduleMain -P!GWTBuild

在此命令中,GWT 插件被停用,因此 maven 只会重建战争。

告诉我这是否适合你。

于 2012-09-04T08:04:42.747 回答