1

我指定了一个插件(在 pom.xml 中),其执行应在流程资源阶段执行。因此,一旦我启动项目,它就会在编译和运行项目之前执行目标(使用 liquibase 更改数据库)。

<plugin>
  [...] 
  <executions>
    <execution>
      <phase>process-resources</phase>
      <goals>
        <goal>update</goal>
      </goals>
    </execution>
  </executions>
</plugin>

当我在生产中部署项目时,我有一个由 tomcat 部署的战争包。

但我不确定目标何时以及是否执行。我希望目标只执行一次,一旦它被部署并且在用户可以使用应用程序之前。

在这种情况下工作流程如何?目标是否只自动执行一次,或者我在这里错过了什么。

4

1 回答 1

1

1. “但我不确定目标何时以及是否执行。”

您可以检查 Maven 的输出。由于您将目标绑定到“process-resources”阶段,因此您可以检查“resources:resources”,如下所示:

   [INFO] [resources:resources {execution: yourExecutionId}]

为每个执行添加 id 是一个好习惯:

            <executions>
                <execution>
                    <id>yourExecutionId</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>

有关 maven 构建生命周期的更多详细信息,您可以在此处参考。

2. “目标是自动执行一次,还是我在这里错过了什么。”

不总是。Maven 插件可以分叉生命周期,这意味着某些阶段将执行多次,例如maven-source-plugin

于 2013-01-29T05:02:32.253 回答