我指定了一个插件(在pom.xml中),其执行应该在process-resources阶段执行。因此,一旦我启动项目,它就会在编译和运行项目之前执行目标(使用liquibase对数据库进行更改)。
<plugin>
[...]
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
当我在生产中部署项目时,我有一个由tomcat部署的war-package。
但我不确定目标何时以及是否已执行。我希望目标在部署之后以及在用户可以使用应用程序之前执行一次。
在这种情况下,工作流程如何?目标是自动执行一次,还是我在这里错过了什么。
答案 0 :(得分:1)
1。 “但我不确定目标何时以及是否已执行。”
您可以检查maven的输出。由于您将目标绑定到“流程资源”阶段,因此您可以检查“资源:资源”,例如:
[INFO] [resources:resources {execution: yourExecutionId}]
为每个执行添加id是一个好习惯:
<executions>
<execution>
<id>yourExecutionId</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
有关maven构建生命周期的更多详细信息,您可以参考here。
2。 “目标是自动执行一次,还是我在这里错过了什么。”
并非总是如此。 Maven插件可以分叉生命周期,这意味着一些阶段将被执行多次,例如maven-source-plugin。