0

我打算将 src 目录中的某些文件的内容替换到 war 中,而不更改 Src 目录中的文件。所以我正在使用 maven-replacer-plugin

<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.3.2</version>
<executions>
 <execution>
  <!-- the replace should happen before the app is packaged -->
  <phase>prepare-package</phase>
  <goals>
   <goal>replace</goal>
  </goals>
 </execution>
</executions>

<configuration>
 <includes>
  <!-- replace the token in this file -->
  <include>target/**/*.html</include>
 </includes>
 <regex>false</regex>
 <!-- the name of the token to replace -->
 <token>BUILD_TIME</token>
 <!-- replace it with the maven project version -->
 <value>${timestamp}</value>
</configuration>

在准备包阶段,我看到文件在目标目录中被替换。我通过运行 mvn prepare-package 来确认这一点,我看到 BUILD_TIME 被构建时间替换。但是当执行包阶段时,来自 src 目录的内容将被替换。从下面的屏幕截图中,我可以看到在 prepare-package 之后的下一个阶段中,正在从导致问题的 src 目录中复制 Web 应用程序资源。

在此处输入图像描述

我尝试在打包阶段使用这个插件也没有成功(我能够在目标目录的 html 中看到构建时间,但在战争中看不到)。

4

1 回答 1

0

终于找到问题了,maven war插件默认使用源码目录打包war。为了覆盖它,我们需要使用 warSourceDirectory 来指定要从中选择的位置。

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <warSourceDirectory>target/illinois</warSourceDirectory>
    </configuration>
  </plugin>

于 2014-05-01T21:07:03.273 回答