摘要
Default Lifecycle中<packaging>war</packaging>
的第一阶段适用于process-resources
,会立即调用maven-resources-plugin
。
如何在运行之前执行插件?
我希望有一种简单的方法可以在运行process-resources
时更改顺序,让另一个插件先运行。
或者强迫早期阶段之一被包含在生命周期中, 没有达到Creating a custom lifecycle
(我很惊讶war
打包不使用validation
或initialization
,因为它们似乎对任何类型的构建都有意义)
详细
我正在尝试使用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}}
答案 0 :(得分:0)
如果maven插件绑定了相同的阶段,那么它们按照pom中的列表顺序执行
maven-resources-plugin
默认绑定到process-resources
但是它在超级pom中声明,当你构建时,超级pom,父poms和当前pom构成一个称为有效pom的pom(你可以通过 mvn help:effective-pom
)
现在开始解决方案,改变插件的执行顺序。
buildnumber-maven-plugin
并将其绑定到process-resources
buildnumber-maven-plugin
下面添加maven-resources-plugin
并将其绑定到process-resources 现在,当您构建时,将在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>
部分之前执行。