如何在使用war包装时过滤资源之前执行maven插件

时间:2013-08-10 21:55:59

标签: maven maven-3

摘要

Default Lifecycle<packaging>war</packaging>的第一阶段适用于process-resources,会立即调用maven-resources-plugin

如何在运行之前执行插件?

我希望有一种简单的方法可以在运行process-resources时更改顺序,让另一个插件先运行。

或者强迫早期阶段之一被包含在生命周期中,  没有达到Creating a custom lifecycle

(我很惊讶war打包不使用validationinitialization,因为它们似乎对任何类型的构建都有意义)

详细

我正在尝试使用buildnumber-maven-plugin生成生成${buildNumber}并使用过滤将其保存在* .properties文件中,该文件通常作为验证或初始化阶段的一部分运行。所以我尝试将它绑定到process-resources阶段以便执行,因为它是第一个。

问题是maven-resources-plugin是在buildnumber-maven-plugin有机会生成${buildNumber}之前执行的第一件事。所有其他属性都经过精细过滤。 (我知道我可以在maven-war-plugin使用web.xml或清单中的initialization后续步骤中执行某些操作,但这不是我要求的内容。

如果它们无法在流程资源中重新排序,我希望我可以通过现有pom.xml中的某种简单配置强制components.xml阶段包含在生命周期中p>

在定义自定义生命周期时,可能会看起来像<configuration> <phases> <initialization>org.codehaus.mojo:buildnumber-maven-plugin:create</initialization> </phases> </configuration>

{{1}}

2 个答案:

答案 0 :(得分:0)

如果maven插件绑定了相同的阶段,那么它们按照pom中的列表顺序执行 maven-resources-plugin默认绑定到process-resources但是它在超级pom中声明,当你构建时,超级pom,父poms和当前pom构成一个称为有效pom的pom(你可以通过 mvn help:effective-pom

检查您的有效pom

现在开始解决方案,改变插件的执行顺序。

  1. 首先添加buildnumber-maven-plugin并将其绑定到process-resources
  2. buildnumber-maven-plugin下面添加maven-resources-plugin并将其绑定到process-resources
  3. 现在,当您构建时,将在process_resources阶段执行,buildnumber-maven-plugin将在maven-resources-plugin之前执行。

答案 1 :(得分:-1)

参见Maven生命周期:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 生命周期参考章节。在process-resources之前有几个阶段,例如generate-resources,可用于绑定插件配置,因此它将在构建的<resources>部分之前执行。