2

我正在使用 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保持状态吗?
  • 如果是这样,我可以从我离开的地方快速重新运行吗?

谢谢

4

3 回答 3

1

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

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

于 2012-10-01T15:48:23.283 回答
1

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

于 2012-10-01T16:18:58.643 回答
0

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

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

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

于 2012-10-01T18:07:20.240 回答