You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven能否使用dependencyManagement中定义的版本配置annotationProcessorPath?

解决方案

你可以通过以下两种方式复用BOM中定义的lombok版本,无需硬编码版本号:

方案一:通过BOM统一属性实现(推荐)

这是企业级项目最常用的维护方式,操作步骤如下:

  1. 在你的common-bom的pom.xml中统一声明版本属性:
<properties>
  <!-- 统一管理lombok版本,所有子项目/配置共用 -->
  <org.projectlombok.version>1.18.20</org.projectlombok.version>
</properties>
  1. 在common-bom的dependencyManagement中引用该属性定义lombok依赖:
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>${org.projectlombok.version}</version>
</dependency>
  1. 在你的项目maven-compiler-plugin配置中直接引用该属性即可:
<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <annotationProcessorPaths combine.children="append">
      <annotationProcessorPath>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${org.projectlombok.version}</version>
      </annotationProcessorPath>
    </annotationProcessorPaths>
  </configuration>
</plugin>

后续版本升级只需要修改common-bom中的属性值即可全局生效。

方案二:直接读取dependencyManagement中的版本(无需修改BOM)

如果你没有权限修改公共BOM,可以直接通过Maven内置表达式读取已导入的dependencyManagement中的版本号:

<annotationProcessorPath>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>${project.dependencyManagement.dependencies['org.projectlombok:lombok'].version}</version>
</annotationProcessorPath>

该方式不需要额外定义属性,直接复用BOM中已经声明的lombok版本,适合无法修改公共物料的场景。


原理说明

普通项目依赖声明时Maven会自动继承dependencyManagement中定义的版本,但annotationProcessorPaths属于插件的自定义配置项,Maven不会主动为其做版本解析,因此需要手动指定版本,通过上述两种方式即可实现版本全局统一。

内容的提问来源于stack exchange,提问作者PapaFreud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:36:02