如何修改Gradle版本目录中定义的模块名称以追加版本后缀?
解决Gradle依赖名称追加版本后缀的问题
你遇到的问题是因为直接修改artifact块的name不会改变依赖的核心坐标(group:name:version),Gradle依然会使用原始名称去搜索仓库路径。以下是两种可行的解决方式:
方式一:直接构造完整依赖坐标
跳过version catalog的预定义,在构建脚本中直接拼接出目标依赖的完整坐标:
modImplementation("software.bernie.geckolib:geckolib-fabric-${libs.versions.minecraft.get()}:${libs.versions.geckolib.get()}")
这种方式最直接,直接指定了包含Minecraft版本后缀的依赖名称,Gradle会按照你需要的路径.../software/bernie/geckolib/geckolib-fabric-1.20.1/...去搜索依赖。
方式二:修改Version Catalog的配置(更优雅的复用方式)
如果你想继续使用version catalog管理依赖,可以在libs.versions.toml中调整配置,通过占位符动态生成名称:
1. 更新libs.versions.toml
[versions] minecraft = "1.20.1" geckolib = "4.4.4" [libraries] geckolib = { group = "software.bernie.geckolib", name = "geckolib-fabric-{mcVersion}", version.ref = "geckolib" }
2. 在build.gradle.kts中替换占位符
val mcVersion = libs.versions.minecraft.get() modImplementation(libs.geckolib) { // 替换名称中的占位符为实际Minecraft版本 val targetName = name.replace("{mcVersion}", mcVersion) // 重新设置依赖的模块坐标 setModule("${module.group}:$targetName:${module.version}") }
这里通过setModule方法直接修改了整个依赖的坐标模块,确保Gradle使用拼接后的名称去搜索仓库。
内容的提问来源于stack exchange,提问作者Yuuki Rika
相关产品推荐
相关产品推荐

