java - 使用 Maven 父级和模块

标签 java maven

我最近发现了神奇的 Maven 模块和父系统。

我有几个应用程序,比如说 A1、A2、A3(还有更多)。

我有几个依赖项集,D1、D2、D3、D4(不是单个依赖项,考虑整个框架,例如 Spring 及其组件)

我的应用程序共享 D4 依赖项集,因此我有一个包含它的基础 pom,B1 由 A1、A2、A3 使用。

现在,棘手的部分:

A1 取决于 D1、D2。

A2 取决于 D2、D3。

A3 取决于 D1、D3。

如您所见,所有应用程序中都没有使用额外的依赖项集,因此我无法在基础 POM 中移动它。

有什么好的方法来管理这些依赖关系吗?当我必须更新所有应用程序的依赖项时,我度过了糟糕的一天,我想以更简单的方式更改它。请记住,我有更多应用程序,因此它一定不是 A1、A2、A3 的特定答案。

(旁注:如果您以 OOP 风格思考,我的应用程序是类,依赖集是接口(interface))

最佳答案

我会推荐你​​:

  • 创建父项目 ( <packaging>pom</packaging> )。

  • 让您的模块扩展它(通过将 <parent>your-parent</parent> 添加到扩展它的项目中)。

  • 定义 <dependeneciesManagement/><pluginManagement/>父级部分。

  • 删除所有 <version/>扩展父项的项目中的依赖项和插件的标签。

  • 您还可以根据技术类型(根据您的情况)创建 pom 文件。例如,您可以创建 spring-dependencies-pom其中包含 <dependencyManagement/>仅定义 spring 依赖项的部分。然后在需要 spring 的模块中,只需添加 spring-dependencies-pom<scope>import</scope> 。 (查看 here 以了解 import 范围的说明)。

这将允许您在一个中心位置进行更改。

关于java - 使用 Maven 父级和模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156474/

相关文章:

java - JAXB:如何将映射编码为 <key>value</key>

java - Jsoup、java、android studio - 没有结果

maven - Jenkins、Junit 和 Flaky 测试处理程序插件

java - 无法正确设置我的 pom.xml 以将变量传递到 XML 文件

java - 在 Android Canvas 上围绕字符串放置一个矩形

java - 忽略可选的@Query参数

java - 在 Libgdx 中嵌入浏览器

java - 找不到名为 'hibernate5AnnotatedSessionFactory' 的 bean 的类 [org.springframework.orm.hibernate5.LocalSessionFactoryBean]

java - hibernate 5.2.2 : ManyToOne first example

java - 提取运行时maven信息