gpt4 book ai didi

eclipse - 每次更改源文件 (GWT) 时都会调用 Maven Project Builder

转载 作者:行者123 更新时间:2023-12-02 20:20:00 25 4
gpt4 key购买 nike

最近我将 GWT Web 应用程序 (GWT 2.4.0) 转换为 Maven 项目。
我正在使用maven 2.2.1,gwt-maven plugin (2.4.0)、Eclipse Indigo (3.7) 和 m2eclipse 插件。

依赖关系和一般配置似乎都很好,因为网络应用程序编译没有任何问题,并且也可以在生产模式下工作。
这同样适用于托管模式。

但是我有一个奇怪的行为:当我更改 Java/GWT 源文件中的一行时,Maven Project Builder 被调用,并且此步骤需要非常长的时间(大约 10 秒)并且 eclipse在此期间有时会变得无法使用。

这是 m2eclipse 的正常行为吗?

如果是的话,有什么办法可以加快速度吗?

注意:我必须为 m2eclipse 配置生命周期插件。这是 pom 文件的重要部分:

<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>

<plugins>

<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.4.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see gwt-maven-plugin
documentation at codehaus.org -->
<configuration>
<runTarget>index.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<i18nMessagesBundle>com.gmi.nordborglab.testapp.client.Messages</i18nMessagesBundle>
</configuration>
</plugin>

<!-- Copy static web files before executing gwt:run -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
<configuration>
<webappDirectory>${webappDirectory}</webappDirectory>
</configuration>
</plugin>
</plugins>

<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<versionRange>[2.4.0,)</versionRange>
<goals>
<goal>resources</goal>
<goal>compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<versionRange>[2.1.1,)</versionRange>
<goals>
<goal>exploded</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>

</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>

</build>

最佳答案

这完美地说明了为什么 m2e 默认情况下不允许任何“未知”插件在增量构建上运行 ( http://wiki.eclipse.org/M2E_plugin_execution_not_covered#Background )。大多数 Maven 插件不适合增量构建,并且在调用它们时都会进行完整构建(作为奖励,您可能会遇到类加载器泄漏)。

在插件管理部分中,您指定应执行 gwt:resources、gwt:compile 和 war:exploded。默认情况下,它们在增量构建上执行,这意味着每次资源更改时都会执行。由于这些目标/插件没有针对增量构建进行优化,因此它们需要一段时间才能完成。

如果您想加快速度,您可以使用

告诉 m2e 仅在完整构建(即项目清理后)上执行它们
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>

然后,手动执行 eclipse clean build 将自动触发它们的执行。请注意,JDT 有时会决定将增量构建升级为完整构建。

我相信(但可能是错误的),如果您使用 Google Eclipse 插件,您可以完全忽略 gwt:resources 和 gwt:compile(通过将 替换为 )。

关于eclipse - 每次更改源文件 (GWT) 时都会调用 Maven Project Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com