当前位置: 首页 > 知识库问答 >
问题:

GWT编译时间性能改进

居和顺
2023-03-14

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

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

目前,我们在一个Eclipse项目中拥有所有内容。指一个应用程序。gwt。xml文件和一个ApplicationContext。spring的xml。我们有大约2000个Java文件,其中大约1500个用于GWT相关的源文件。

该项目仍在增长,源文件越来越多。

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

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

喜欢

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

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

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

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

  • 模块1(JAR构建)
  • 模块2(JAR构建)
  • 主模块(WAR构建)。这将包含应用程序。gwt。将继承模块1的xml文件

现在问题来了:

1) 这是否有助于我们缩短编译时间?

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

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

谢谢Niraj Salot。

共有1个答案

董建茗
2023-03-14

我会先回答你的第二个问题,因为它不是GWT特定的。考虑到您的项目是这样结构的:

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

如果在module2中进行了一些更改,并且不想重新编译module1,则可以使用选项-pl将其从生成过程中跳过(从项目根目录文件夹启动的命令):

mvn clean install -pl module2,moduleMain

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

这是否有助于我们缩短编译时间?

这取决于模块1和模块2与模块main相比的大小。。。但我对GWT的经验是,通常需要花费大量时间将java客户端代码编译成javascript。这个操作仍然发生在您的模块main中,因此我想说的是,将项目拆分为几个模块不足以显著缩短编译时间。

此外,我建议您使用一个配置文件来控制模块main中gwt maven插件的激活/停用。

在模块main的pom中。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只会重建战争。

告诉我这是否对你有用。

 类似资料:
  • 我正试图减少gwt项目的编译时间,使用maven概要文件来设置是需要所有排列还是只需要其中的一部分。 我按照教程在这里:http://www.bonitasoft.org/blog/tutorial/speed-up-gwt-i18n-compilation-using-maven-profiles/ 但是,它没有说明如何创建这两个模块(生产和开发)。这些都是应用程序。gwt。xml文件,如果是,

  • 当我使用“loglevel=all”时,我得到一行输出“checking for updates”,然后它挂起。 我尝试创建一个新的项目并复制源文件--没有改变。

  • 我正在使用GWT 2.4.0和GXT 3.0.0b,我试图用谷歌编译应用程序,但每次我都会遇到这个错误。 问题是什么?它是否有一些缺失的jar/插件?早些时候,我将GWT 2.1与Gxt 2.4一起使用,Gxt 2.4用于精细编译。请帮忙

  • 我正在尝试学习java的这个新GWT部分。。。 我做了我的第一个简单的应用程序 我命名了 我的模块:-HelloWorld 我收到以下错误: 2014年4月18日下午4:00:53爪哇。util。首选项。WindowsPreferences警告:无法在根0x8000002处打开/创建prefs根节点Software\JavaSoft\prefs。Windows RegCreateKeyEx(…)返

  • 我正试图在JDK7U7下编译一个相对简单的、仅客户端的GWT2.5.0应用程序。

  • 我们的团队试图从GWT 2.4.0升级到2.5.0,但现在我们面临的问题是编译器引发了一个异常。以下是编译器日志: 绑定:用户。代理=safari绑定:编译器。useSourceMaps=true绑定:locale=en编译模块应用程序。m8。网状物AGM验证单元:第一次通过时忽略了3个有编译错误的单元。编译时将-strict或-logLevel设置为TRACE或DEBUG以查看所有错误。[错误]