在 Maven 反应器项目中管理运行时依赖项

Posted

技术标签:

【中文标题】在 Maven 反应器项目中管理运行时依赖项【英文标题】:Managing runtime dependencies in a maven reactor project 【发布时间】:2020-06-24 22:16:33 【问题描述】:

我有一个带有 rest 模块和 war 模块的 maven reactor 项目。 war 模块是 rest 模块以及 web.xml 文件的包装器。我试图了解在 war 模块中维护所有运行时依赖项是否是一种好习惯。例如,如果我在 rest 模块中引入依赖项 X(它具有接口 X),我想将 X 的运行时依赖项作为 war 模块的一部分。这样,所有编译范围的依赖都在 rest 层 pom 中,所有运行时依赖都在 war 层中。

注意:我看不到其余层会被除 war 项目之外的任何其他 pom 文件拉入的情况。

任何人都可以看到这种方法的问题吗?我错过了什么我会后悔的事情吗?

例子:

Project A 有两个模块:project-rest 和 project-war。 Project-war 是 project-rest 的包装器,并且在 web.xml 中有一些围绕身份验证的 Web 过滤器(此模块中没有源代码)。

Project-rest 显然拥有 REST 资源并调用服务层。服务层根据实现分为不同的项目,project-service是接口,project-service-hibernate是实现。至于在 project-rest 中管理依赖项,我所需要的只是要构建的项目的编译时依赖项。我计划将 project-service 依赖项添加到 project-rest pom 文件和 project-service-hibernate 作为对 project-war pom 文件的运行时依赖项。这里的目标是分离和管理war模块中的所有运行时依赖项和rest模块中的编译时依赖项。

【问题讨论】:

对不起,我不明白这个问题。您可以在问题中添加一个示例吗?为什么你需要两个模块中的依赖关系? @JFMeier,提供了一个例子。如果您需要更多信息,请告诉我。 【参考方案1】:

实际上,我更愿意将所有依赖项(运行时和编译依赖项)打包到 rest 模块中。

通过这种方式,您可以看到编译和运行时依赖项属于一起。

特别是,如果war没有源代码,我不会添加依赖。

【讨论】:

以上是关于在 Maven 反应器项目中管理运行时依赖项的主要内容,如果未能解决你的问题,请参考以下文章

解决 Maven 警告“在构建的此时无法解决以下依赖项,但似乎是反应器的一部分”

使 Maven 将依赖项复制到 target/lib

maven警告:使用同一工件的两种不同类型的依赖项时重复版本

在 Maven 中跟踪托管依赖项版本

注入 Maven 插件依赖项运行时

Eclipse 项目中缺少 Maven 依赖项