6

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

网址:http ://deploy.cloud.testmx.com:8081/nexus/content/groups/public/

用户:testmx

通过:testmx@testmx

组 ID: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

我尝试了几种替代方法,但它们给了我同样的错误......

我已经检查了这篇文章和这个SO question

并且还尝试将用户名和密码保存在外部文件中,如此此处所述。

任何的想法?

-- 编辑澄清 --

我更改了真实的网址,因为它不是我正在使用的公共回购......真实的网址在那里,并且 sbt 试图找到的 pom 确实存在......

ps:顺便说一句.. sbt scaladocs 在哪里???

4

2 回答 2

11

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

publishTo := Some("testmx public" at "http://deploy.cloud.testmx.com:8081/nexus")

此外,如果您不想将凭据保留在 Build 文件中,可以通过添加以下行告诉它在本地检索它们:

credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"),

并在您的~/.ivy2目录中创建一个.credentials像这样的文件:

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

有关更多信息,请参见https://github.com/harrah/xsbt/wiki/Publishing

于 2012-06-06T02:55:21.420 回答
6

传递凭据时有两个问题。

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

您必须通过服务器在尝试登录时向您发送的相同领域(只需在铬上按 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/"
)

正如预期的那样,将您的凭据设置在不同的文件中,同样的修改也可以正常工作......

感谢大家的回答

于 2012-06-06T06:26:41.057 回答