15

我有一个带有身份验证的 maven 存储库,我希望 sbt 只使用 maven 存储库

我的 build.sbt:

resolvers += "My Repo" at "https://my.repository.addresss/repo/"

externalResolvers <<= resolvers map { rs =>
    Resolver.withDefaultResolvers(rs, mavenCentral = false)
}

但是当我输入时sbt clean compile,它仍然是从 repo1.maven.org 下载的,我无法覆盖它!

由于我的 maven repo 必须进行身份验证,所以当我将默认 repo 配置放入 ~/.sbt/repositories 时它总是失败

有什么方法可以让我只使用我的 repo,并且验证成功吗?

4

3 回答 3

6

不幸的是,我只能帮助您解决问题的一部分。

如果您只想使用您的 Maven 存储库,请查看 sbt 文档,代理存储库一章。那里使用了文件 ~/.sbt/repositories。或者,您也可以使用 sbt.boot.properties(请参阅启动器配置)。

不要忘记从此处记录的构建脚本中覆盖构建存储库。如果你不这样做,sbt 仍然会尝试连接到 repo1.maven.org。

我今天做了同样的事情(使用 sbt 0.12.3),它有效!

于 2013-06-05T13:01:48.250 回答
1

尝试这个:

lazy val yourRepo = "yourRepo" at "https://yourRepo.com/nexus/content/groups/public"

fullResolvers := {
    val oldResolvers = fullResolvers.value
    val idx = oldResolvers.map(_.isInstanceOf[DefaultMavenRepository$]).indexOf(true)
    oldResolvers.take(idx) ++ Seq(yourRepo) ++ oldResolvers.drop(idx)
}
于 2017-01-04T06:56:05.777 回答
0

我遇到过你类似的情况。解决方案是

  1. 创建~/.ivy2/.credentials

    realm=Sonatype Nexus Repository Manager
    host=yourRepo.com
    user=yourUser
    password=yourpassword
    
  2. 将此行添加到build.sbt

    credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
    
  3. ~/.sbt/repositories根据http://www.scala-sbt.org/1.0/docs/Proxy-Repositories.html创建

于 2017-01-04T07:27:01.330 回答