如how do I get sbt to use a local maven proxy repository (Nexus)?所述,如何使用sbt 0.11.x来使用公司Maven存储库(排除其他存储库)?在github的新sbt wiki中没有提到ivyRepositories
,所以我假设已接受的解决方案已经过时了。
答案 0 :(得分:11)
第1步:按照Detailed Topics: Proxy Repositories上的说明进行操作,我已将其汇总并添加到下面:
(如果您使用的是Artifactory,则可以跳过此步骤。)在公司Maven存储库中创建完全独立的 Maven代理存储库(或组),以代理常春藤风格的存储库,例如这两个重要的存储库:
这是必需的,因为一些存储库管理器无法处理混合在一起的Ivy风格和Maven风格的存储库。
创建一个文件repositories
,列出您的主要公司存储库以及您在步骤1中创建的任何额外存储库,格式如下所示:
[repositories]
my-maven-proxy-releases: http://repo.example.com/maven-releases/
my-ivy-proxy-releases: http://repo.example.com/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
将该文件保存在主目录中的.sbt
目录中,或在sbt命令行中指定(您需要指定是否有disabled sharing):
sbt -Dsbt.repository.config=<path-to-your-repo-file>
使用旧版本sbt 的人的好消息:尽管至少在sbt 0.12.0启动程序jar中,旧sbt版本的启动属性文件不包含所需的行(提到repository.config
)的那个,如果编辑这些文件以添加所需的行,它仍将适用于那些版本的sbt,并将它们重新打包到sbt 0.12.0启动程序jar中!这是因为该功能在启动器中实现,而不是在sbt本身中实现。据称sbt 0.12.0发射器能够发射所有版本的sbt,直接回到0.7!
步骤2:要确保未使用外部存储库,请从解析程序中删除默认存储库。这可以通过以下三种方式之一完成:
-Dsbt.override.build.repos=true
。这将导致您在文件中指定的存储库覆盖任何sbt文件中指定的任何存储库。这可能只适用于0.12及以上版本,但我还没有尝试过。overrideBuildResolvers := true
,其优势在于您可以控制适用的项目,具体取决于哪个范围(项目/ ThisBuild
/ {{1你定义它。这适用于sbt 0.13。Global
解析程序为您的公司maven存储库 fullResolvers := Seq(
而不是)
或resolvers ++=
或其他你曾经使用过。最后,请注意sbt启动程序脚本在读取resolvers :=
文件时存在错误,因此如果您决定将常用的sbt命令行选项放在那里,请确保文件的最后一行以换行符(特别是Emacs可能无法确保这一点,除非配置为这样做)。
答案 1 :(得分:5)
接受答案的第2步的替代方案(使用sbt 0.13.1):
将文件.sbtopts
添加到项目根目录,其内容为:
-Dsbt.override.build.repos=true
另一种方法是在$SBT_HOME/conf/.sbtopts
中添加此行,但这会强制设置所有项目。
答案 2 :(得分:3)
解压缩 sbt-launcher.jar 并将 sbt.boot.properties 文件复制到您选择的位置。更改启动脚本以使用此文件。在该文件中,将存储库部分更改为仅包含本地存储库和公司存储库。 Maven和Ivy之间的区别来自给定的模式(默认情况下,没有模式表示Maven模式)。
以下是一个例子:
[repositories]
local
corporate: http://inhouse.acme.com/releases/