SBT加速

用SBT编译scala项目的时候,下载jar包巨慢无比。

搜索解决方案,希望可以像pip一样,有一个简便的解决方案,让SBT编译快如闪电。

更改依赖库为国内源

  • ~/.sbt目录下创建repositories文件。
  • 设置仓库地址

    1
    2
    3
    4
    [repositories]
    local
    oschina:http://maven.oschina.net/content/groups/public/
    oschina-ivy:http://maven.oschina.net/content/groups/public/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

试用,发现还是很慢。

Repox

github上发现一个项目,Centaur/repox

Repox的主要目标是改善sbt解决依赖的速度,但由于它的服务方式与url的格式无关,因此也支持ivy, gradle, maven, leiningen客户端,可以作为nexus/artifactory的替代品来搭建私服。

具体的安装和试用官网文档相当详细,这里简单的写一下我使用时的流程。

  • repox未提供直接可用的jar,所以需要自己编译。克隆代码后,编译成jar。
  • 设置终端alias

    1
    2
    # 将path改成你自己的目录
    alias repox="java -Xmx512m -jar /path/repox-assembly-0.1-SNAPSHOT.jar &"
  • 配置~/.sbt/repositories文件。

    1
    2
    3
    4
    [repositories]
    local
    repox-maven: http://127.0.0.1:8078/
    repox-ivy: http://127.0.0.1:8078/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  • 启动repox,只需在终端输入repox即可。

  • 访问http://localhost:8078/admin/admin.html,密码是zhimakaimen
  • 导入配置文件,地址在这里。下载后上述页面有个导入选项,将下载下来的json文件导入即可。

完成上述步骤后再编译,快如闪电。