离线环境下构建 sbt 项目

在公司网络中使用sbtMaven等项目构建工具时,我们通常会搭建一个公用的Nexus镜像服务,原因有以下几个:

  • 避免重复下载依赖,节省公司带宽;
  • 国内网络环境不理想,下载速度慢;
  • IDC服务器没有外网访问权限;
  • 用于发布内部模块。

sbt的依赖管理基于Ivy,虽然它能直接使用Maven中央仓库中的Jar包,在配置时还是有一些注意事项的。

配置Nexus镜像

根据这篇官方文档的描述,Ivy和Maven在依赖管理方面有些许差异,因此不能直接将两者的镜像仓库配置成一个,而需分别建立两个虚拟镜像组。

安装Nexus后默认会有一个Public Repositories组,可以将其作为Maven的镜像组,并添加一些常用的第三方镜像:

对于Ivy镜像,我们创建一个新的虚拟组:ivy-releases,并添加以下两个镜像:

对于sbt-plugin,由于一些原因,Nexus会将其置为Automatically Blocked状态,因此要在配置中将这个选项关闭,否则将无法下载远程的依赖包。

配置sbt

为了让sbt使用Nexus镜像,需要创建一个~/.sbt/repositories文件,内容为:

[repositories]
  local
  my-ivy-proxy-releases: http://10.x.x.x:8081/nexus/content/groups/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  my-maven-proxy-releases: http://10.x.x.x:8081/nexus/content/groups/public/

这样配置对大部分项目来说是足够了。但是有些项目会在构建描述文件中添加其它仓库,我们需要覆盖这种行为,方法是:

$ sbt -Dsbt.override.build.repos=true

你也可以通过设置SBT_OPTS环境变量来进行全局配置。

经过以上步骤,sbt执行过程中就不需要访问外网了,因此速度会有很大提升。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值