我们希望使用公司内部常春藤/ maven存储库(artifactory)来提高解析和下载jar文件的速度,并且我们还希望使用它来在组织中的不同团队之间交换二进制jar文件。
我知道我们可以通过设置~/.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/
然后使用-Dsbt.override.build.repos=true
启动SBT。这种方法对我有用。
然而,要求所有开发人员以这种方式设置是很麻烦的。我们想知道我们是否可以在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下载jar。
2)然后我决定将存储库文件放入项目文件夹,并尝试直接在plugin.sbt中添加java选项,并使用
添加Build.scalaSystem.setProperty("-Dsbt.override.build.repos", "true"),
System.setProperty("-Dsbt.repository.config", "project/repositories"),
但它仍然无效。我很好奇SBT获得解析器的java选项,因为很明显,它是在plugin.sbt和Build.scala之前。
有什么想法吗?
感谢。
DB Tsai
答案 0 :(得分:2)
如果您偏离sbt-extras shell脚本作为默认启动器脚本的替代品,我猜您可以通过设置~/.repositories
并添加-Dsbt.override.build.repos=true
轻松修改该脚本。然后,您需要做的就是确保您的开发人员使用该脚本。
答案 1 :(得分:0)
我总是在SVN / GIT中添加SBT构建作为我的回购的一部分,关闭代码。然后我没有这样的问题。
它的成本约为1MB,因此非常便宜并且解决了很多问题。所有开发者使用相同的构建工具即使我尝试创建Continues Integration或更高级的Continues Delivery流程,所有SBT配置也将在我的SCM中配置得很好。我将得到一个真实的来源:)
答案 2 :(得分:0)
根据文档,我们应该使用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
之类的插件,您还必须在project/resolvers.sbt
文件夹中进行此操作。
如果您还希望SBT可以自行从特定存储库中进行解析,则需要按照以下说明进行操作: https://www.scala-sbt.org/1.x/docs/Proxy-Repositories.html