Maven是否记得它的状态,所以我可以轻松地重新运行最后一个命令?

时间:2012-10-01 15:37:34

标签: java maven build maven-3

我正在使用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持州吗?
  • 如果可以的话,我可以从我离开的地方快速重新开始吗?

由于

3 个答案:

答案 0 :(得分:1)

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

最后,虽然您总是需要从父模块进行完整构建,以便构建最终的工件。无论如何,从最顶层开始往往最容易。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

不 - 至少根据我的经验,Maven没有保持其状态。如果您正在运行mvn package,这一点尤为重要。而在多模块项目上运行mvn package可以正常工作(所有模块都可以使用前一个模块生成的工件),如果构建中断,从构建中途恢复将导致工件不在引用以前成功构建的模块时发现错误。

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

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