我们想使用公司内部的ivy / maven存储库(人工工厂)来提高解析和下载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/
然后使用启动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)),
但是它仍然从typesafe和maven1下载jar。
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之前。
任何想法?
谢谢。
蔡德培
如果您将sbt-extras shell脚本替换为默认启动器脚本,则可以通过设置~/.repositories
和添加轻松地对其进行修改-Dsbt.override.build.repos=true
。然后,您要做的就是确保开发人员使用该脚本。
是的 如果仅在Build.scala等程序中找不到方法,则可能会替换默认的启动程序脚本。但这是我会做的最后一件事。
为此,我们将其用作解决方案。谢谢。
你在哪里设置
-Dsbt.override.build.repos=true
?在文件中还是作为sbt参数?@pedromss,如果我没记错的话,那是sbt的参数。另请参阅:stackoverflow.com/questions/29779973/…