【问题标题】:Maven clean lifecycleMaven 清理生命周期
【发布时间】:2014-12-05 04:33:46
【问题描述】:

我在很多地方都阅读了 maven 的 clean 和 site 生命周期,但无法理解它是如何工作的。 请通过一些示例向我解释 Maven 的清洁生命周期流程。 它与构建有何不同。 在构建开始之前,清理完成了,对吧? 清洁前后阶段会发生什么。

【问题讨论】:

  • "在构建开始之前,清理工作已经完成,对吧" 不,默认情况下不是,尽管运行 mvn clean install 很常见。

标签: eclipse maven maven-clean-plugin


【解决方案1】:

在 pre-clean 或 post-clean 中默认不会发生任何事情,但如果您愿意,您可以自己使用它们。例如,如果您想为历史目的保留过去的构建,那么您可以在预清理阶段运行备份。或者您可以使用 post-clean 进行一些额外的清理,例如重置本地数据库或 LDAP 目录。

【讨论】:

    【解决方案2】:

    干净的生命周期包含以下life cycle phases

    • 预清洁
    • 干净
    • 清理后

    如果您致电mvn clean,将运行以下生命周期阶段:

    pre-clean, clean
    

    如果您致电mvn post-clean,将运行以下生命周期阶段:

    pre-clean, clean, post-clean
    

    默认情况下,在 clean lifeclyce 中,只有 maven-clean-plugin 绑定到通常会删除目标文件夹的 clean 阶段。通常没有任何东西绑定到post-clean

    网站等其他生命周期包含以下阶段:

    pre-site, site, post-site, site-deploy
    

    虽然您通常调用 mvn site 或有时调用 mvn site-deploy

    所谓的default 生命周期包含更多阶段(仅摘录):

    验证、...、编译、测试、..、打包、...、安装、部署

    每个阶段都绑定了不同的插件,这些插件会尽其所能获得您想要的结果。

    【讨论】:

    • 我发现清理后阶段对于重置本地数据库很有用。您可以调用“clean”进行定期清理,然后在持续集成等地方使用“post-clean”,或者在需要重置测试数据时使用。
    • 对于像这样的集成测试,pre-integration-testintegration-testpost-integration-test 阶段更有针对性,甚至更容易通过 maven-failsafe-plugin 使用常规单元测试进行集成junit-jupiter 或 test ng 等框架。
    • 我们的构建通常使用集成测试阶段进行 Selenium 场景测试。能够根据需要手动重置数据库仍然很有用。
    【解决方案3】:

    在基于 Maven 的项目中,许多缓存输出存在于您的“目标”文件夹中。当您要构建项目以进行部署时,您必须确保清除所有缓存的输出,以便始终获得最新的部署。

    例如:如果你重命名一个类,之前编译的版本将保留在 target/classes 中,直到你运行 clean。这可能完全无害,但如果通过类路径扫描等自动检测到它可能会导致问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      相关资源
      最近更新 更多