2

我最近发现了神奇的 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 风格思考,我的应用程序是类,依赖集是接口)

4

3 回答 3

4

我会推荐你​​:

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

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

  • 在父级中定义一个<dependeneciesManagement/><pluginManagement/>部分。

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

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

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

于 2013-10-03T10:58:23.737 回答
1

使用依赖管理,如以下链接所述,版本管理委托给父模块,子模块可以自由使用它们。

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html http://www.tutorialspoint.com/maven/maven_manage_dependencies.htm

于 2013-10-03T10:30:09.493 回答
0

我认为您可以创建模块 D1、D2 等,它们的 POM 中列出了它们的依赖项,但不包含 Java 代码或其他资源。

然后在例如模块 A1 中,您可以添加 D1 和 D2 作为依赖项,然后它们的所有依赖项都将被传递包含。

然后,您最终会遇到一种情况,即构成 D1 等的依赖项都可以在一个地方进行管理 - 即在 D1 的 POM 中。

这就是你所追求的吗?

于 2013-10-03T10:25:59.103 回答