用经过身份验证的repo覆盖sbt默认解析器?

时间:2013-06-05 11:54:43

标签: scala sbt

我有一个带身份验证的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

时总是会失败

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

3 个答案:

答案 0 :(得分:5)

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

如果您只想使用maven repo,请查看sbt文档,第proxy repositories章。那里使用了文件〜/ .sbt / repositories。或者,您也可以使用sbt.boot.properties(请参阅Launcher configuration)。

不要忘记按照文档here的构建脚本覆盖构建存储库。如果 你不这样做,sbt仍然试图连接到repo1.maven.org。

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

答案 1 :(得分:0)

试试这个:

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)
}

答案 2 :(得分: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. 根据http://www.scala-sbt.org/1.0/docs/Proxy-Repositories.html

  4. 创建~/.sbt/repositories