使用maven阶段执行部署war-project

时间:2013-01-28 22:37:46

标签: java-ee maven tomcat maven-plugin liquibase

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

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

当我在生产中部署项目时,我有一个由tomcat部署的war-package。

但我不确定目标何时以及是否已执行。我希望目标在部署之后以及在用户可以使用应用程序之前执行一次。

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

1 个答案:

答案 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