我正在尝试使用 Eclipse Luna 调试我的 Maven webapp 项目,以便在 Tomcat 8 中启动它。遗憾的是,在尝试将构建时间戳部署到 Tomcat 时,在资源筛选期间无法解析构建时间戳。Eclipse构建的WAR文件已经解决了这个问题,但它部署到Tomcat的内容(通过"在服务器上运行"选项)却没有。
在我的绒球.xml中,我得到了:
<properties>
<timestamp>${maven.build.timestamp}</timestamp>
</properties>
<build>
<finalName>rapid-installer</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
在一个属性文件中,我有
build.date=${timestamp}
我的解决方案是将以下内容添加到我的pom.xml中,以便时间戳可用,从而使应用程序不会在Tomcat中启动时崩溃。
<profiles>
<profile>
<id>m2e</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<properties>
<maven.build.timestamp>2014-01-01</maven.build.timestamp>
</properties>
</profile>
</profiles>
现在,当应用程序通过 Eclipse 中的"在服务器上运行"部署到 Tomcat 时,它始终显示该构建时间戳。有关为什么需要这样做以及它是如何工作的详细说明:https://bugs.eclipse.org/bugs/show_bug.cgi?id=388874
,这很正常。
使用 eclispe WTP 机制在 Tomcat 中部署应用程序完全绕过了 maven 生命周期。一旦您开始使用战争叠加层和 maven 提供的此类"花哨"的东西,这就会变得更加烦人。
到目前为止,唯一的解决方案是不要使用 eclipse WTP 视图进行部署,而是使用 maven cargo 插件。