我需要将以下库定义为依赖项:
网址: http://deploy.cloud.testmx.com:8081/nexus/content/groups/public/
用户: 测试MX
通行证:testmx@testmx
组 ID: testmx
artifactId: testmxcommons
版本:1.0.0-快照
所以我定义了以下项目/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问题
并且还尝试将用户和密码保存在外部文件中,如此处和此处所述。
知道吗?
--编辑以澄清 --
我更改了真实的网址,因为它不是我正在使用的公共存储库......真正的网址就在那里,sbt 试图找到的 pom 确实存在......
ps:顺便说一句,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
查看 https://github.com/harrah/xsbt/wiki/Publishing 了解更多信息
传递凭据时有两个问题。
首先是我通过了错误的领域。(感谢Alex Varju的这个)
您必须传递服务器在尝试登录时发送给您的相同 Realm(只需在 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/"
)
正如预期的那样,在不同的文件中设置您的凭据,通过相同的修改也可以正常工作......
感谢大家的回答