【问题标题】:Does Maven remember its state so I can easily rerun last command?Maven 是否记得它的状态,以便我可以轻松地重新运行上一个命令?
【发布时间】:2012-09-22 11:44:48
【问题描述】:

我正在使用 Maven 多模块项目。当我运行 maven 并且其中一个模块失败时,我收到错误消息,然后是以下行

After correcting the problems, you can resume the build with the command
    mvn <goals> -rf :my.module.name

Maven 是否持有任何状态?是否可以运行

  mvn <goal> `start from where we left off`

我问的原因是我的一些模块名称很长。我可以从 cmd 提示符复制,但我想要一个更快/更短的命令。通常节省几秒钟可能看起来不多,但在我使用 maven 的过程中,它可以为我节省很多。

问题是

  • maven 是否保持状态?
  • 如果可以,我可以从上次中断的地方快速重新运行吗?

谢谢

【问题讨论】:

  • 我不知道这样的选项。也许我的构建不会经常失败,从命令行复制/粘贴就足够了? =)
  • 在我看来,来自 Maven 的消息已经告诉您如何执行此操作。如果您的问题是模块名称过长,请编写脚本或别名(或使用带有命令历史搜索功能的 shell)以方便您。

标签: java maven build maven-3


【解决方案1】:

您可以使用Maven Shell 在预加载的 shell 环境中执行 maven 目标/阶段,从而显着减少构建时间。

【讨论】:

【解决方案2】:

不,但是您可以进入各个模块并构建它们 - 这本质上是 maven 所做的,您只需要以正确的顺序遍历它们,否则您可能会得到令人困惑的结果(即旧的依赖模块构建等)。 reactor 构建摘要向您显示 maven 将运行的模块构建顺序,并在构建开始时显示。

最后,尽管您总是需要从父模块进行完整构建才能构建您的最终工件。无论如何,从顶部运行通常是最容易的。

【讨论】:

    【解决方案3】:

    不 - 至少根据我的经验,Maven 不会保持其状态。如果您正在运行mvn package,这一点尤其重要。虽然在多模块项目上运行mvn package 可以正常工作(所有模块都将能够使用前一个模块生成的工件),但如果构建被中断,中途从构建恢复将导致工件未找到错误参考以前成功构建的模块时。

    解决这个问题的两种方法。重建一切,或使用mvn install 要求 maven 安装到您的本地仓库(如果您还没有准备好部署)。在这种情况下,恢复您的构建不会失败,因为它会在您的本地仓库中找到以前构建的模块。

    就像个人的烦恼一样,在使用-rf 标志时,您需要知道模块工件名称。 Maven 将向您显示显示名称,它可能是也可能不是工件名称。 -rf 需要工件名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      • 2011-06-16
      • 2011-06-20
      相关资源
      最近更新 更多