【发布时间】:2022-02-01 00:08:06
【问题描述】:
有许多使用公共父 POM 的共享库 (jar)。
父 POM 的属性 log4j.version 定义为 2.17.1
子项目 A 和 B 具有使用版本 ${log4j.version} 定义的 log4j 依赖项
mvn clean install 工作正常。但是当我查看为项目 A 或 B 生成的工件时,他们的 POM 仍然在依赖项部分将 log4j 版本显示为 ${log4j.version}。如果其他项目开始使用库 A 或 B,这不会产生使用 2.17.1 版的预期效果。有什么方法可以将版本定义保留在父级中,但让子项目在构建的工件中指定版本?
而且我不想在父 POM 中添加 log4j 依赖项,因为我有几个根本不需要/使用 log4j 的子项目。另外,这并不能解决问题,因为即使这样,构建后的子项目也根本不会调用 log4j 的依赖关系?可能比我现在的情况更糟
【问题讨论】:
-
为什么会出现这个问题?没有父级,子级工件的 pom 是不完整的,任何使用子级工件的人最终都会下载父级以获取这些版本,等等。如果您想要实际数字,请将它们硬编码并使用dependabot 之类的工具来保持更新。