如何在本地存储库之后,但在默认存储库之前添加Nexus解析器

  • 本文关键字:存储 Nexus 添加 之后 默认 sbt
  • 更新时间 :
  • 英文 :


我们有一个内部Nexus存储库,用于向其发布工件,并缓存外部依赖项(来自Maven Central、Typesafe等)

我想在SBT构建中添加存储库作为解析器,但有以下限制:

  1. 这些设置需要是构建声明的一部分(.sbt或.scala,但不在"全局"sbt设置中
  2. 如果本地存储库中存在依赖项,则应该从那里获取它。我不想访问网络来获得每个构建的所有依赖项
  3. 如果本地不存在依赖项,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)
}

它有效,但有点脏。。。如果有人有"更清洁"的解决方案,我很乐意听到。

最新更新