如how do I get sbt to use a local maven proxy repository (Nexus)?中所述,如何将公司Maven存储库与sbt 0.11.x一起使用(不包括其他存储库)?在github上的新sbt Wiki中没有提及ivyRepositories
,因此我假设那里接受的解决方案已过时。
最佳答案
第1步:按照Detailed Topics: Proxy Repositories上的说明进行操作,我已对其进行了总结并添加至以下内容:
这是必需的,因为某些存储库管理器无法处理混合在一起的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 0.12.0启动器jar中,则这些版本的sbt仍然适用。这是因为该功能是在启动器中实现的,而不是在sbt中实现的。据说sbt 0.12.0启动器能够启动所有版本的sbt,从0.7开始!步骤2:为确保未使用外部存储库,请从解析器中删除默认存储库。可以通过以下三种方式之一来完成此操作:
-Dsbt.override.build.repos=true
。这将导致您在文件中指定的存储库覆盖在任何sbt文件中指定的任何存储库。但是,这可能仅在sbt 0.12及更高版本中有效-我尚未尝试过。 overrideBuildResolvers := true
,其优点是可以根据定义它的范围(项目/ThisBuild
/Global
)来控制适用项目。这在sbt 0.13中有效。 fullResolvers := Seq(
解析器用于构建文件中的公司Maven存储库)
,而不是resolvers ++=
或resolvers :=
或以前使用的任何解析器。 最后,请注意sbt启动器脚本在读取
sbtopts
文件时存在错误,因此,如果您决定在其中放置常用的sbt命令行选项,请确保文件的最后一行以换行符结尾(特别是Emacs除非进行配置,否则无法确保做到这一点)。
关于maven - sbt 0.11 : Using a corporate maven repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115405/