Gradle中如何为内部versionCatalog设置changing=true以取消缓存实时拉取?
解决Gradle版本目录每次构建强制拉取的方案
针对你遇到的latest.release版本目录缓存问题,有几个可行的解决办法:
1. 命令行强制刷新
每次构建时添加--refresh-dependencies参数,直接强制Gradle忽略缓存,重新拉取所有依赖(包括版本目录):
./gradlew build --refresh-dependencies
Windows环境使用:
gradlew.bat build --refresh-dependencies
2. 配置模块解析策略,标记为变动依赖
在settings.gradle中添加解析策略,明确将你的版本目录模块标记为变动依赖,并调整缓存规则:
dependencyResolutionManagement { resolutionStrategy { eachDependency { details -> if (details.requested.group == 'com.myCompany.myGroup' && details.requested.name == 'catalog') { details.changing = true } } // 设置变动依赖的缓存超时为0秒,每次构建都检查更新 cacheChangingModulesFor 0, 'seconds' } versionCatalogs { libs { from("com.myCompany.myGroup:catalog:latest.release") } } }
通过cacheChangingModulesFor将变动依赖的缓存周期设为0,确保每次构建都会去仓库拉取最新版本。
3. 改用快照版本
如果可以调整Nexus中的版本目录版本号,建议改用快照版本(比如1.0.0-SNAPSHOT),Gradle对快照版本默认会更频繁地检查更新,无需额外配置即可实现近似实时的拉取:
dependencyResolutionManagement { versionCatalogs { libs { from("com.myCompany.myGroup:catalog:1.0.0-SNAPSHOT") } } }
内容的提问来源于stack exchange,提问作者Amir Pashazadeh
相关产品推荐
相关产品推荐

