【发布时间】:2023-03-25 07:37:01
【问题描述】:
我正在使用 BOM 将依赖项从另一个项目导入到我的项目中,并且我需要一种方法来引用已在所述 BOM 中声明的依赖项版本。到目前为止,我已经尝试将依赖版本作为属性列在 BOM 中,但这种方法失败了,因为属性没有随 BOM 一起导入。
我已经看到 Dependency Plugin 的 dependency:properties 目标在哪里几乎完全符合我的需要,但我没有给我一个工件的完整路径,我需要将版本作为属性。有没有什么东西可以给我一个已解决的工件的版本作为属性?
更新 - '为什么不使用父 pom?'
我通常发现自己在应用程序服务器环境中工作,其中提供的依赖项是用 BOM 工件指定的(因为这似乎已成为分发相互关联的工件组的某种常见/标准方式,即widlfly) .因此,我想将 BOM 视为唯一的事实来源。对已经在 BOM 中定义的依赖版本属性进行重新删除这样的想法似乎是不正确的。
如果我要在反映应用程序服务器环境的父 pom 中定义属性,我现在必须担心保持父 pom 属性和 BOM 属性同步 - 为什么还要有一个 BOM?
信息已经在依赖树上,只是暴露它的问题......
【问题讨论】:
-
通常的方法是使用定义所有版本的common parent (IRL example)。
-
@zapl - 查看编辑,我正在专门处理 BOM。
-
为什么要为依赖项使用属性,因为它是通过依赖项管理中的 BOM 定义的,因此您不需要定义版本。为什么需要引用依赖?
-
它们最终派上用场有很多原因。例如,我最近不得不使用 JBoss 模块。它们要求您编写一个 module.xml 文件,明确说明您正在使用的任何 .jar 依赖项。除非您的 pom 中存在可以过滤这些 .jar 名称的属性,否则您只能手动维护 module.xml。事实是,在 maven 生态系统中,这些版本最终以 just 依赖声明之外的方式有用。