【问题标题】:Best approach to use in multi-module Maven project?在多模块 Maven 项目中使用的最佳方法?
【发布时间】:2017-08-18 06:27:26
【问题描述】:

我有几个模块:

A
B
C

每个模块都有一个核心模块作为其依赖项之一:

A+core
B+core
C+core

现在我应该在 D 中将 A、B、C 打包在一起,但我设法从 排除核心模块 >BC,我把核心模块放在A中。

D 
|+ A-core
|+ B-removed core
|+ C-removed core

在这种情况下最好的做法是什么?这是一个坏习惯吗?

【问题讨论】:

  • 每个模块A、B和C的core是否相同core模块?
  • 是的,如果有任何改变

标签: java spring maven spring-boot multi-module


【解决方案1】:

您可能有多个依赖项将core 依赖项拉入D pom.xml
因此,不需要排除。
这里重要的是ABC 依赖于完全相同版本的core 依赖项,否则D 包装可能包含core 的版本而不是另一个版本。
如果这两个版本的使用不兼容,它可以编译没有错误,但在运行时会产生异常。

因此,请专注于在 ABC 中使用独特版本的 core
使用父 pom 或创建一个聚合公共依赖项的依赖项都是缓解这种情况的工具。

【讨论】:

  • 不客气。有可能的。但一般来说,我们将父 pom 关联到同一个应用程序的所有模块,以继承/强制执行整个应用程序的依赖项/Java 版本/插件配置等。它使应用程序构建更加一致、简洁且不易出错。
【解决方案2】:

项目布局:

 root
   +--- pom.xml
   +--- core
   !      +-- pom.xml
   +--- A
   !    +-- pom.xml
   +--- B
   !    +-- pom.xml
   +--- C
        +-- pom.xml

在其他模块中使用core 作为依赖项。构建顺序由 Maven 处理。

【讨论】:

    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多