Scala Play framework和sbt:将凭据传递给nexus passowrd保护的回购

Scala Play framework和sbt:将凭据传递给nexus passowrd保护的回购,scala,playframework,dependencies,sbt,Scala,Playframework,Dependencies,Sbt,我需要将以下库定义为依赖项: 网址: 用户:testmx 通过:testmx@testmx groupId:testmx artifactId:testmxcommons 版本:1.0.0-SNAPSHOT 因此,我定义了以下项目/Build.scala import sbt._ import Keys._ import PlayProject._ object ApplicationBuild extends Build { val appName = "testm

我需要将以下库定义为依赖项:

网址:

用户:testmx

通过:testmx@testmx

groupId:testmx

artifactId:testmxcommons

版本:1.0.0-SNAPSHOT

因此,我定义了以下项目/Build.scala

import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

    val appName         = "testmxproject"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      "mysql" % "mysql-connector-java" % "5.1.18",
      "testmx" % "testmxcommons" % "1.0.0-SNAPSHOT"
    )

    val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
      credentials += ("testmx public", "deploy.cloud.testmx.com:8081", "testmx", "testmx@testmx"),
      resolvers += "testmx public" at "http://deploy.cloud.testmx.com:8081/nexus/content/groups/public/"
    )

}
我得到以下错误:

[warn]  module not found: testmx#testmxcommons;1.0.0-SNAPSHOT

[warn] ==== testmx public: tried
[warn]   http://deploy.cloud.testmx.com:8081/nexus/content/groups/public/testmx/textmxcommons/1.0.0-SNAPSHOT/textmxcommons-1.0.0-SNAPSHOT.pom
我尝试了几个选择,但他们给了我同样的错误

我查过了,这个

并且还尝试将用户和密码保存在外部文件中,正如前面所解释的那样

有什么想法吗

--编辑以澄清--

我更改了真实的url,因为它不是我正在处理的公共回购。。。真正的url在那里,sbt试图找到的pom确实存在


附言:顺便说一句。。sbt scaladocs在哪里?

您需要告诉sbt要发布到哪个存储库:

publishTo := Some("testmx public" at "http://deploy.cloud.testmx.com:8081/nexus")
此外,如果您不想将凭据保留在生成文件中,可以通过添加以下行告诉它在本地检索凭据:

credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"),
然后在您的
~/.ivy2
目录中创建一个
.credentials
文件,如下所示:

realm=Sonatype Nexus Repository Manager
host=deploy.cloud.testmx.com
user=testmx
password=testmx@testmx

有关更多信息,请参见传递凭据时出现两个问题

首先是我通过了错误的领域。(感谢Alex Varju的这一次)

您必须通过服务器在尝试登录时发送给您的相同域(只需在chromium上按ctrl-shift-I或F12,然后进入网络查看)

第二个问题是我传递了端口号,而sbt似乎不喜欢这样

所以,最后我这样做了,效果很好:

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
  credentials += ("Sonatype Nexus Repository Manager", "deploy.cloud.testmx.com", "testmx", "testmx@testmx"),
  resolvers += "testmx public" at "http://deploy.cloud.testmx.com:8081/nexus/content/groups/public/"
)
在不同的文件中设置您的凭据,正如预期的那样,在相同的修改下也可以正常工作


感谢所有人的回答

非常感谢你的回答manuel,我尝试了你所说的,但仍然出现相同的错误,是否有任何方法可以调试sbt以了解通过了哪些凭据?我今天遇到了类似的问题,并发现Wireshark是一种有效的方法,可以查看网络级别出现了什么问题。在我的例子中,我没有将领域属性设置为“Sonatype Nexus Repository Manager”,因此没有发送密码。你是对的,Alex,我传递了错误的领域,应该是“Sonatype Nexus Repository Manager”,但我仍然收到相同的错误。。。要尝试使用wireshark…当您只获取依赖项时,似乎没有必要使用publishTo…好吧,至少我找到了sbt的scaladocs:“credentials+=”(“credentials+=”)不应该替换为“credentials+=credentials”(“对吗?只是向其他人重申一下。就像其他人说的,确保您的领域是正确的。