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

为何Maven update-properties不更新dagger.version?如何解决?

问题:Versions插件不更新dagger.version属性的原因及解决方法

使用display-dependency-updates检测到com.google.dagger:dagger有新版本(2.52→2.53.1),但update-properties目标完全不处理dagger.version属性,display-property-updates也忽略该属性;而定义方式相同的jooq.version可以正常被处理。

dagger.version用于配置常规依赖版本,以及kotlin-maven-plugin的注解处理器路径;jooq.version用于常规依赖和插件依赖版本。怀疑是在插件配置中使用该属性导致Versions插件忽略它,求问原因及解决办法。


相关日志及配置

依赖更新检测日志

[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   com.google.dagger:dagger .............................. 2.52 -> 2.53.1

update-properties执行日志

[INFO] --- versions:2.18.0:update-properties (default-cli) @ server ---
[INFO] Property ${jooq.version}: Leaving unchanged as 3.19.16

display-property-updates执行日志

[INFO] The following version properties are referencing the newest available version:
[INFO]   ${jooq.version} ............................................. 3.19.16

版本属性定义

<dagger.version>2.52</dagger.version>
<jooq.version>3.19.16</jooq.version>

Kotlin Maven插件配置(使用dagger.version的部分)

<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
    <jvmTarget>${jvm.release}</jvmTarget>
    <args>
        <arg>-Xcontext-receivers</arg>
    </args>
</configuration>
<executions>
    <execution>
        <id>kapt</id>
        <goals>
            <goal>kapt</goal>
        </goals>
        <configuration>
            <annotationProcessorPaths>
                <annotationProcessorPath>
                    <groupId>com.google.dagger</groupId>
                    <artifactId>dagger-compiler</artifactId>
                    <version>${dagger.version}</version>
                </annotationProcessorPath>
            </annotationProcessorPaths>
        </configuration>
    </execution>

原因分析

Versions插件的update-properties目标默认仅追踪直接在<dependencies>或<dependencyManagement>块中引用的版本属性,而插件配置(比如kotlin-maven-plugin的annotationProcessorPaths)里的属性引用,默认不在插件的扫描范围内。

jooq.version能被正常处理,是因为它同时在常规依赖中被直接引用,插件可以关联到对应的依赖坐标,从而识别该属性需要更新;而dagger.version要么是通过依赖传递间接引用,要么插件的扫描逻辑未覆盖annotationProcessorPaths这类插件内部的依赖配置,导致无法把dagger.version和com.google.dagger:dagger的版本更新关联起来。


解决方法

方法1:显式在dependencyManagement中声明dagger依赖

在项目的<dependencyManagement>块中添加com.google.dagger:dagger和dagger-compiler的显式声明,绑定dagger.version属性:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger</artifactId>
            <version>${dagger.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>${dagger.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

这样Versions插件就能明确关联dagger.version到对应的依赖坐标,从而在update-properties时检测并更新该属性。

方法2:配置Versions插件的propertyIncludes规则

如果不想添加dependencyManagement,可以在Versions插件的配置中,显式指定要处理的dagger.version属性,同时关联对应的依赖坐标:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.18.0</version>
            <configuration>
                <propertyIncludes>
                    <propertyInclude>dagger.version</propertyInclude>
                    <propertyInclude>jooq.version</propertyInclude>
                </propertyIncludes>
                <dependencyIncludes>
                    <dependencyInclude>com.google.dagger:*</dependencyInclude>
                </dependencyIncludes>
            </configuration>
        </plugin>
    </plugins>
</build>

方法3:升级Versions插件版本

该问题已在Versions插件的社区仓库提交反馈,后续版本可能会修复annotationProcessorPaths这类插件内部依赖的属性扫描问题。可以尝试升级到最新版本的插件,验证是否解决该问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:40:10