20

我们希望使用公司内部的 ivy/maven 存储库(artifactory)来提高解析和下载 jar 文件的速度,并且我们希望使用它在我们组织中的不同团队之间交换二进制 jar 文件。

~/.repositories我知道我们可以通过设置来强制 SBT 通过代理

[repositories]
  local
  my-ivy-proxy-releases: http://repo.alpinenow.com/artifactory/repo/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  my-maven-proxy-releases: http://repo.alpinenow.com/artifactory/repo/

然后使用-Dsbt.override.build.repos=true. 这种方法对我有用。

但是,要求所有开发人员都以这种方式进行设置有点麻烦。我们想知道是否可以在 Build.scala 和 plugin.sbt 中完全覆盖默认解析器,而无需额外配置。

到目前为止,我已经尝试了以下方法但没有成功。

1)在 Build.scala 和 plugin.sbt 中,我添加了

resolvers := "Local Repo" at "http://repo.alpinenow.com/artifactory/repo/",

externalResolvers := Seq(Resolver.url("Local Repo", url("http://repo.alpinenow.com/artifactory/repo"))(Resolver.ivyStylePatterns)),

但它仍然从 typesafe 和 maven1 下载 jars。

2)然后我决定将存储库文件放入项目文件夹中,并尝试直接在plugin.sbt和Build.scala中添加java选项

System.setProperty("-Dsbt.override.build.repos", "true"),

System.setProperty("-Dsbt.repository.config", "project/repositories"),

但它仍然不起作用。我很好奇 SBT 何时获得解析器的 java 选项,因为很明显,它在 plugin.sbt 和 Build.scala 之前。

任何想法?

谢谢。

德宝蔡

4

3 回答 3

4

项目级别

根据我们应该使用的文档externalResolvers
https ://www.scala-sbt.org/release/docs/Library-Dependencies.html#Overriding+default+resolvers

externalResolvers := Seq(
  "Local Repo" at "http://repo.alpinenow.com/artifactory/repo/",
  // some more internal Nexus repositories
)

插件级别

您还必须在您的project文件夹中为插件执行此操作,例如 in project/resolvers.sbt

全球 SBT 级别

如果您还希望 SBT 它自己从特定的仓库中解析,您需要按照此处所述进行操作: https ://www.scala-sbt.org/1.x/docs/Proxy-Repositories.html

于 2019-07-04T00:55:43.317 回答
3

如果您离开sbt-extras shell 脚本来替代默认启动器脚本,我想您可以通过设置~/.repositories和添加-Dsbt.override.build.repos=true. 然后,您需要做的就是确保您的开发人员使用该脚本。

于 2013-10-26T16:17:48.210 回答
0

我总是将 SBT 构建作为我在 SVN/GIT 中的回购的一部分,并以代码结尾。那我就没有这样的问题了。

它花费大约 1MB 空间,因此非常便宜并且解决了很多问题。所有开发人员都使用相同的构建工具。即使我尝试创建 Continues Integration 或更高级的 Continues Delivery 流程,所有 SBT 配置都已经在我的 SCM 中进行了很好的配置。我会得到一个真实的来源:)

于 2013-10-25T11:43:36.450 回答