有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在使用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) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

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

    正如个人所恼怒的那样,在使用-rf标志时,您需要知道模块工件的名称。Maven将向您显示显示名称,该名称可能是工件名称,也可能不是工件名称-rf需要工件名称

  3. # 3 楼答案

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

    但最后,为了构建最终工件,您将始终需要从父模块进行完整构建。不管怎样,从最上面跑通常是最容易的