0

我已经设置了两个 eclipse 项目(jsf2 web 项目)并通过 eclipse 将它们部署到 glassfish

eclipse juno ee 4.2.1 sr1 (fresh install and new workspace)
maven wtp
m2e
glassfish plugin for eclipse
glassfish 3.1.2.2

一个项目是一个从头开始创建的简单动态 Web 项目,它只有一个 ejb 和一个 .xhtml 文件。

在动态 Web 项目中保存 .xhtml 文件时,它将被静默复制到 glassfish/domains/domain1/eclipseApps 中的正确位置,以便快速测试更改。

然而,在我使用 import-maven-project-wizard(选择一个 .pom 文件)创建的另一个项目中,保存一个 .xhtml 文件将触发重建和重新发布,这需要相当多的时间。在这两种情况下,应用程序都运行得很好。

(使用primefaces,一些glassfish-web.xml persistence.xml等maven项目也更复杂......但我相信这不会导致不同的行为)

问:我需要更改什么设置才能让我的 Maven 项目表现为动态 Web 项目?

编辑:问题摘要:在 maven 项目中保存 .xhtml 文件也会触发所有 EJB 和 ManagedBeans 的重新部署

编辑(在balus C的提示之后):

调查表明,m2e wtp 插件在每次保存工作区中的文件时都会在以下文件中生成新的时间戳。

target\m2e-wtp\web-resources\META-INF\maven\<groupId>\<artifactId>\pom.properties
target\m2e-wtp\web-resources\META-INF\maven\<groupId>\<artifactId>\pom.xml

如果我正确理解了这里的讨论,那么有人已经完成了一个修复,如果由于其他 Maven 的东西而不需要这些文件,将阻止这些文件被更新。遗憾的是,如果我正确理解了 git-hub,这个问题的修复还没有发布。

Maven 归档器支持<addMavenDescriptor/>禁用 pom.properties 生成的配置选项,但似乎 m2e-wtp 插件已决定不遵守此选项链接

编辑 (20130114) 我尝试卸载 m2e wtp 只是为了看看是否摆脱 pom.properties 的生成会解决问题。我还检查了我编辑的 .xhtml 文件是 domain/domain1/eclipseApps/ 下唯一具有新时间戳的文件。

所以现在我又没有想法了。

4

1 回答 1

0

终于设法解决了这个问题。这是我为新创建的 Maven 项目(它还依赖于工作区中的另一个项目)所需执行的最少步骤

在 Eclipse 项目属性 > Maven 中,取消选中“解决工作区项目中的依赖项”

在 pom 文件中为目标设置 runOnIncremental:war for maven-war-plugin 为 false

<build>
    ...
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-war-plugin</artifactId>
                                    <versionRange>[1.0.0,)</versionRange>
                                    <goals>
                                        <goal>war</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute>
                                        <runOnIncremental>false</runOnIncremental>
                                    </execute>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
于 2013-03-29T10:34:57.073 回答