2

我正在开发一些 sbt 0.13.5 项目,这些项目会提取 100 多个依赖项进行编译。从韩国这里到达像typesafe.com//这样的服务器需要大约 1scala-sbt.org秒的maven.org时间,这使得依赖关系解析需要几个小时才能完成。所以我设法通过以下方式设置 sbt 以使用安装在本地网络上的人工镜像:

● 保存~/.sbt/repositories如下,

[repositories]
  local
  ivy-proxy-releases: http://artifactory.local:8088/artifactory/ivy-release, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  maven-proxy-releases: http://artifactory.local:8088/artifactory/libs-release
  maven-proxy-shapshots: http://artifactory.local:8088/artifactory/libs-snapshot

● 在顶部添加以下行~/.sbt/0.13/plugins/build.sbt

sbtResolver := Resolver.url("ivy proxy repo", url("http://artifactory.local:8088/artifactory/ivy-release"))(Resolver.ivyStylePatterns)

● 将同一行添加到本地项目目录的./project/plugins.sbt

通过这样做,我可以大大减少提取依赖 jar 所需的时间,但 sbt 仍在访问repo.scala-sbt.org并且repo.typesafe.com只是为了获得一些 404(有很大的延迟)。

因此,只有在我/etc/hosts将这些域指向一个虚拟 Web 服务器之后,我才能实现最短的构建时间。(约 2 分钟提取所有依赖项并编译play-scala示例)

是否有一个设置可以让 sbt 完全忘记scala-sbttypesaferepos 并且只使用配置的本地代理?

4

1 回答 1

2

您可以使用设置 sbt.override.build.repos 覆盖构建存储库,如下所示:sbt doc。也有一个类似问题的答案。

于 2014-07-22T10:21:31.313 回答