如何覆盖spring boot BOM的版本
Posted
技术标签:
【中文标题】如何覆盖spring boot BOM的版本【英文标题】:How to overwrite version of spring boot BOM 【发布时间】:2022-01-19 14:38:32 【问题描述】:我在更新 Log4j 版本时遇到问题。在我的pom.xml
文件中,我更新了这样的版本:
<properties>
// other stuff //
<org.apache.logging.log4j.version>2.16.0</org.apache.logging.log4j.version>
</properties>
但在依赖项中:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>org.apache.logging.log4j.version</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>org.apache.logging.log4j.version</version>
</dependency>
版本抛出一个错误,它从 BOM 文件覆盖到 2.11.1。我在哪里可以更新我的pom
以导入 2.16.0 版本的 BOM 文件?
【问题讨论】:
【参考方案1】:我想你可以试试这个来覆盖 spring-boot bom。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.16.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
... other dependencies including spring-boot-dependencies
</dependencies>
</dependencyManagement>
【讨论】:
【参考方案2】:不好/没有效果(可能是 log4j1):
<org.apache.logging.log4j.version>2.16.0</org.apache.logging.log4j.version>
更好
(对于 spring-boot-parent-based [2-2.6.1]/spring-dependeny-managed):
<log4j2.version>2.16.0</log4j2.version>
;)
Link
【讨论】:
更改标签后出现其他错误。我在 pom 的插件部分得到了这个:'build.pluginManagement.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-surefire-plugin
这个(最新的)是一个“简单的修复”! (只需阅读错误消息:“发现插件的重复声明..surefire..”)
sry 复制到错误的一个,我管理了那个,我用这个有问题:Plugin could not be resolved. Ensure the plugin's groupId, artifactId and version are present. Additional information: Plugin org.jacoco:jacoco-maven-plugin:0.8.3 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jacoco:jacoco-maven-plugin:jar:0.8.3
uff,这更难(并且可能不相关)see here ..它可能是(临时/永久)网络问题,或者您的“公司(maven)存储库”......如果一切都失败了:只需下载它(到本地 maven repo (~/.m2/repository
))【参考方案3】:
所以这两个答案都帮助我找到了解决问题的方法。问题是在我的dependency
中,我没有为我的version
标签添加$
符号。所以有了这行代码,它现在可以工作了:<version>$org.apache.logging.log4j.version</version>
【讨论】:
以上是关于如何覆盖spring boot BOM的版本的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot BOM 管理 Maven 插件版本