我们有一个内部Nexus存储库,用于向其发布工件,并缓存外部依赖项(来自Maven Central、Typesafe等)
我想在SBT构建中添加存储库作为解析器,但有以下限制:
- 这些设置需要是构建声明的一部分(.sbt或.scala,但不在"全局"sbt设置中
- 如果本地存储库中存在依赖项,则应该从那里获取它。我不想访问网络来获得每个构建的所有依赖项
- 如果本地不存在依赖项,sbt应该先尝试从Nexus存储库中获取它,然后再尝试外部存储库
我在这里看到了几个类似的问题,但没有找到任何解决方案。具体来说,我目前拥有的代码是:
externalResolvers ~= { rs => nexusResolver +: rs }
但当我show externalResolvers
时,Nexus回购出现在本地回购之前。
到目前为止,我已经提出了以下解决方案:
externalResolvers ~= { rs =>
val grouped = rs.groupBy(_.isInstanceOf[FileRepository])
val fileRepos = grouped(true)
val remoteRepos = grouped(false)
fileRepos ++ (nexusResolver +: remoteRepos)
}
它有效,但有点脏。。。如果有人有"更清洁"的解决方案,我很乐意听到。