资讯动态

Renovate 中的 Kotlin Script 依赖管理:`@file:DependsOn` 提取原理与 `managerFilePatterns` 配置指南

发布时间:2026/9/13 17:10:25 来源:尧图企业网站定制
Renovate 中的 Kotlin Script 依赖管理file:DependsOn提取原理与managerFilePatterns配置指南【免费下载链接】renovateHome of the Renovate CLI: Cross-platform Dependency Automation by Mend.io项目地址: https://gitcode.com/GitHub_Trending/re/renovateRenovate 支持在 Kotlin Script.main.kts文件中升级依赖。本指南以lib/modules/manager/kotlin-script管理器为对象说明 Renovate 如何识别file:DependsOn与file:Repository注解、默认仅扫描.main.kts的原因以及如何通过managerFilePatterns扩展托管范围。读完本文你将掌握在renovate.json中为 Kotlin Script 配置正确的文件匹配规则并理解其底层提取逻辑与测试验证方式。一、Kotlin Script 与依赖声明方式Kotlin Script.kts是 Kotlin 官方支持的可执行脚本格式允许通过文件级注解直接声明第三方依赖例如使用 JitPack 或 Maven 中央仓库的坐标#!/usr/bin/env kotlin file:Repository(https://jitpack.io) file:DependsOn(com.github.krzema12:github-actions-kotlin-dsl:main-SNAPSHOT) file:DependsOn(org.eclipse.jgit:org.eclipse.jgit:4.6.0.201612231935-r) file:DependsOn(org.jetbrains.lets-plot:lets-plot-kotlin-jvm:3.0.2) println(Hello world!) // ...其中file:Repository(...)用于声明额外的仓库地址file:DependsOn(groupId:artifactId:version)声明一条形如 Maven 坐标的依赖#!/usr/bin/env kotlin是脚本可执行时的 shebangRenovate 的提取逻辑并不依赖它。关于 Kotlin 脚本依赖机制本身的更多背景可参考 Kotlin Script 官方教程。二、默认扫描范围为什么只匹配.main.ktsRenovate 的kotlin-script管理器默认只扫描.main.kts后缀的文件不会扫描普通.kts文件。默认配置定义在 index.tsexport const defaultConfig { managerFilePatterns: [/^.\\.main\\.kts$/], };对应 index.spec.ts 会校验该正则合法且确实是正则表达式it(managerFilePatterns regex is correct, () { expect(defaultConfig.managerFilePatterns).toHaveLength(1); const [pattern] defaultConfig.managerFilePatterns; expect(isRegexMatch(pattern)).toBeTrue(); expect(() regEx(pattern)).not.toThrow(); });这样设计的目的在于避免与 Gradle 配置文件的歧义Gradle 的 Kotlin DSL 构建脚本同样使用.gradle.kts后缀其中并不存在file:DependsOn语义。若不加区分地扫描所有.kts文件Renovate 会试图把 Gradle 脚本误当作 Kotlin Script 依赖清单处理产生无意义的解析结果甚至误报。三、用managerFilePatterns扩展托管文件如果确实需要管理其他 Kotlin Script 文件例如自定义后缀或普通.kts文件可通过managerFilePatterns配置项覆盖默认模式。managerFilePatterns定义于 lib/config/options/index.ts接受 RE2 正则与 glob 模式的数组patternMatch: true、mergeable: true作用于 repository 阶段不支持 CLI 与环境变量注入。在renovate.json中按如下方式配置{ kotlin-script: { managerFilePatterns: [/^.*\\.kts$/] } }配置要点正则需以/包裹如/^.*\.kts$/Renovate 会将其作为 RE2 正则解析该配置会替换该管理器的默认模式默认值[/^.\\.main\\.kts$/]而非追加。若希望同时保留.main.kts并扩展其他模式需要把默认模式一并写入{ kotlin-script: { managerFilePatterns: [/^.\\.main\\.kts$/, /^.*\\.custom\\.kts$/] } }也支持 glob 风格匹配例如**/*.kts如果仓库中同时存在 Gradle Kotlin DSL.gradle.kts文件扩大匹配范围后请确认不会引入误解析。四、底层提取逻辑file:DependsOn与file:Repository的解析管理器核心实现在 extract.tsextractPackageFile()通过四组正则完成解析正则作用dependsOnBlockRegex匹配file:DependsOn(...)块捕获参数区dependencyRegex从参数区提取groupId:artifactId:version三元组repositoryBlockRegex匹配file:Repository(...)块repositoryUrlRegex从仓库参数中提取字符串形式的 URL解析步骤收集仓库地址遍历所有file:Repository(...)块提取其中每个字符串 URL写入返回结果的registryUrls数组提取依赖遍历每个file:DependsOn(...)块将其参数中的groupId:artifactId:version拆分为depNamegroupId:artifactIdcurrentValueversionreplaceString完整三元组字符串用于后续在文件中精确替换版本datasourceMavenDatasource.id即maven空结果处理若未解析出任何依赖返回null表示该文件不属于 Kotlin Script 依赖清单后续不会为其生成更新分支。管理器元数据同样位于 index.tscategories: [java]supportedDatasources: [MavenDatasource.id]即所有依赖都经由 Maven Datasource 查询版本依赖坐标与版本判定遵循 Maven 约定适合 JitPack、Maven Central 等仓库托管的库。值得注意的解析细节正则灵活性file与DependsOn、括号之间允许空白见测试夹具 generic-case.main.kts 中file : DependsOn (...)的写法依赖声明也支持多行与逗号分隔的 vararg 形式缺段依赖被跳过坐标不完整的声明如缺少 groupId 或 version不会生成依赖项。测试夹具 missing-parts.main.kts 演示了:org.eclipse.jgit:4.6.0...、org.jetbrains.lets-plot::3.0.2这类残缺坐标被忽略的场景version 支持 SNAPSHOT 等值com.github.krzema12:github-actions-kotlin-dsl:main-SNAPSHOT这类非常规版本同样可以被提取后续交由 Maven Datasource 做版本查询与比较。五、测试用例验证提取行为一览extract.spec.ts 覆盖了以下关键行为可作为理解解析边界的参考常规多依赖提取从generic-case.main.kts中提取 3 条依赖包含单行、多行、带空白注解三种写法自定义仓库检测file:Repository(https://jitpack.io)被写入registryUrls空字符串仓库file:Repository()会被忽略无依赖返回 null仅含println的脚本返回nullvararg 注解file:DependsOn(a, b)与file:Repository(url1, url2)一次声明多个依赖/仓库均能正确拆分缺段跳过仅完整groupId:artifactId:version会被采纳。这些测试直接印证了上一节的提取规则也说明该管理器是纯文本正则解析不执行 Kotlin 脚本因此解析成本低、无副作用适合大规模仓库扫描。六、实战配置示例将 Kotlin Script 依赖升级接入仓库的最小配置{ extends: [config:recommended], managerFilePatterns: { kotlin-script: [/^.\\.main\\.kts$/] } }若项目中 Kotlin 脚本散落在子目录且统一使用.main.kts保持默认即可若使用自定义后缀如scripts/*.kts则需显式覆盖{ kotlin-script: { managerFilePatterns: [/^scripts\\/.*\\.kts$/] } }配置完成后Renovate 会为每个可解析出依赖的脚本文件生成更新分支通过 Maven Datasource 查询最新版本并以 PR 形式提交变更替换文件中的版本号字符串。总结Renovate 的kotlin-script管理器默认仅处理.main.kts以避开与.gradle.kts的歧义依赖与仓库分别通过file:DependsOn与file:Repository注解声明底层由 extract.ts 以正则解析并统一走 Maven Datasource需要管理更多 Kotlin Script 文件时用managerFilePatterns覆盖默认匹配模式注意是替换而非追加解析行为有完整的测试与夹具支撑extract.spec.ts、generic-case.main.kts、missing-parts.main.kts便于后续扩展与回归验证。【免费下载链接】renovateHome of the Renovate CLI: Cross-platform Dependency Automation by Mend.io项目地址: https://gitcode.com/GitHub_Trending/re/renovate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价