You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Groovy/Jenkins中如何移除GrabResolver的标准仓库?

移除Groovy/Jenkins中Grab的默认仓库(如MavenCentral)

我完全理解内网环境下Grab尝试访问公共仓库超时的痛苦——Groovy的GrabResolver确实没有直接提供移除默认仓库的方法,但咱们有几个实用的办法来解决这个问题:

方法1:全局禁用默认仓库(最推荐)

通过设置JVM系统属性,直接让Groovy放弃加载MavenCentral这类默认仓库:

-Dgroovy.grab.defaultRepositories=false
  • 要是在Jenkins里,你可以去全局配置的「JVM参数」里加上这个属性,所有Groovy脚本都会生效;
  • 单独跑Groovy脚本的话,启动命令里带上这个参数就行。

设置之后,Grab只会用你通过@GrabResolver添加的内网仓库,再也不会去碰公共仓库了。

方法2:脚本内临时禁用

如果没法改全局配置,也能在脚本开头临时设置这个系统属性,一定要放在@Grab注解之前

// 先关掉默认仓库
System.setProperty('groovy.grab.defaultRepositories', 'false')

// 再配置内网仓库和依赖
@GrabResolver(name='internal-repo', root='http://your-company-internal-repo/')
@Grab('com.yourcompany:your-dependency:1.0.0')
import com.yourcompany.YourClass

// 接下来写你的业务代码...

方法3:自定义Ivy配置(进阶场景)

如果需要更细粒度的仓库管理,可以写个自定义的Ivy配置文件,只包含你的内网仓库。然后用@GrabConfig指定这个文件:

@GrabConfig(settings='file:./ivy-settings.xml')
@GrabResolver(name='internal-repo', root='http://your-company-internal-repo/')
@Grab('com.yourcompany:your-dependency:1.0.0')

这个配置文件里要确保只引用内网仓库,把公共仓库的配置删掉。不过这种方法相对繁琐,一般前两种就够用了。

总结一下:优先用方法1或2,能快速解决超时问题,让Grab只专注于你的内网仓库。

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

火山引擎 最新活动