【问题标题】:Maven skip recompilation of submoduleMaven跳过子模块的重新编译
【发布时间】:2018-06-22 02:01:09
【问题描述】:

这是我当前的项目设置:

父母

  • 子模块 A
  • 子模块 B
  • 子模块 C

我有一个多模块设置,其中一个特定子模块 (A) 的编译需要相当长的时间。由于 A 很少更改,我想在重新编译项目时跳过它。但是我遇到了问题,因为 B 依赖于 A。所以执行

mvn clean install -pl !A

或使用类似的配置文件

<modules>
  <module>Submodule B</module>
  <module>Submodule C</module>
<modules>

<profiles>
  <profile>
    <id>include-A</id>
    <modules>
      <module>Submodule A</module>
    </modules>
  </profile>
</profiles>

失败是因为 B 无法找到 A,即使它存在于我之前 Maven 执行的 .m2 文件夹中,因为它在我们的 Nexus 存储库中查找该工件。

如果我将子模块 A 移到一个单独的项目中似乎可行,但是我必须管理具有相同配置的两个项目,所以我更愿意保留我的项目结构。

【问题讨论】:

  • 如果您确定您的子模块 A 已正确构建,您可以使用选项 -rf :submoduleB 开始构建,这将使 Maven 仅从您的子模块 B 而不是从子模块开始构建您的项目A. 但是,无论何时您要发布您的项目,请始终对其进行完整构建
  • 感谢您的想法,但是它失败并出现相同的错误,因为它仍然无法解决依赖项 A

标签: java maven dependencies multi-module


【解决方案1】:

可能不是最优雅的解决方案,但您可以将子模块 B 和 C 合并到另一个模块下,如下所示:

父母

  • 子模块 A
  • 子父级
    • 子模块 B
    • 子模块 C

现在您应该能够cd 进入子父文件夹并仅构建子模块 B 和 C。

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2013-07-04
    • 2012-01-08
    • 1970-01-01
    • 2018-05-07
    • 2020-10-11
    相关资源
    最近更新 更多