如何使用sbt 0.11.x来使用公司Maven存储库(排除其他存储库),如我如何让sbt使用本地maven代理存储库(Nexus)中所述??ivyRepositories在github的新sbt wiki中没有提到,所以我假设已经过时的解决方案已经过时了.
Rob*_*een 11
步骤1:按照详细主题:代理存储库中的说明进行操作,我已将其汇总并添加到下面:
(如果您使用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]
Run Code Online (Sandbox Code Playgroud)将该文件保存在.sbt主目录中的目录中,或者在sbt命令行中指定它(您需要指定是否禁用了共享):
sbt -Dsbt.repository.config=<path-to-your-repo-file>
Run Code Online (Sandbox Code Playgroud)对于那些使用旧版本的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/ Global)来控制适用的项目.这适用于sbt 0.13.fullResolvers := Seq( 解析器作为公司maven存储库 ),而不是使用resolvers ++=或者resolvers :=使用过的任何内容.最后,请注意sbt启动程序脚本在读取sbtopts文件时存在错误,因此如果您决定在其中放置常用的sbt命令行选项,请确保文件的最后一行以换行符结尾(特别是Emacs可能会失败)确保这一点,除非配置为这样做).
小智 5
接受答案的第2步的替代方案(使用sbt 0.13.1):
.sbtopts使用内容将文件添加到项目根目录:
-Dsbt.override.build.repos=true
Run Code Online (Sandbox Code Playgroud)
另一种方法是添加此行$SBT_HOME/conf/.sbtopts,但这会强制所有项目的设置.
| 归档时间: |
|
| 查看次数: |
6983 次 |
| 最近记录: |