(SBT)如何禁用默认解析程序并仅使用公司内部解析程序?

DB *_*sai 12 scala nexus artifactory sbt

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

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

[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/
Run Code Online (Sandbox Code Playgroud)

然后启动SBT -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)),
Run Code Online (Sandbox Code Playgroud)

但它仍然从typesafe和maven1下载罐子.

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

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

System.setProperty("-Dsbt.repository.config", "project/repositories"),
Run Code Online (Sandbox Code Playgroud)

但它仍然无效.我很好奇SBT获得解析器的java选项,因为很明显,它是在plugin.sbt和Build.scala之前.

任何的想法?

谢谢.

DB蔡

Joa*_*oan 6

项目级别

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

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

插件级别

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

全球SBT级别

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


0__*_*0__ 3

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