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

如何配置Kotlin脚本使用自定义本地Maven缓存目录?

配置Kotlin脚本使用自定义本地Maven缓存目录

我正在使用带有@file:Repository和@file:DependsOn注解的Kotlin脚本文件添加依赖项。默认情况下,脚本运行时依赖项会缓存到~/.m2目录中。在CI环境中,我希望使用另一个缓存位置,例如project-root/.m2,以便在后续CI步骤中持久化并复用该缓存。请问如何配置Kotlin脚本,使其使用自定义本地Maven仓库/缓存目录而非~/.m2?

方法1:命令行参数指定

运行Kotlin脚本时,通过-J参数将Maven本地仓库路径传递给JVM:

# 使用kotlinc编译并运行
kotlinc -J-Dmaven.repo.local=./.m2 your-script.kts

# 或直接用kotlin命令执行
kotlin -J-Dmaven.repo.local=./.m2 your-script.kts

maven.repo.local是Maven定义的标准系统属性,Kotlin脚本的依赖解析逻辑会直接遵循该配置。

方法2:脚本内预设置系统属性

在脚本的最顶部(所有@file:注解之前)添加系统属性设置,确保依赖解析前生效:

// 必须放在依赖注解之前
System.setProperty("maven.repo.local", "./.m2")

@file:Repository("https://maven.apache.org/maven2")
@file:DependsOn("com.example:demo-dependency:1.0.0")

// 脚本业务代码...

这种方式不需要额外命令行参数,适合固定缓存路径的场景。

方法3:自定义Maven Settings文件

如果需要更多Maven相关配置(如镜像、代理),可以创建项目级settings.xml:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>${project.basedir}/.m2</localRepository>
</settings>

运行脚本时指定该配置文件:

kotlinc -J-Dmaven.settings=./settings.xml your-script.kts

CI环境中可将该settings.xml纳入版本控制,统一复用配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 21:13:14