【问题标题】:deploying a war-project with maven-phase execution使用 Maven 阶段执行部署战争项目
【发布时间】:2013-01-28 22:37:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案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 构建生命周期的更多详细信息,您可以参考here

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多