I need to define as a dependency the following library:
url: http://deploy.cloud.testmx.com:8081/nexus/content/groups/public/
user: testmx
pass: testmx@testmx
groupId: testmx
artifactId: testmxcommons
version: 1.0.0-SNAPSHOT
So I defined the following project/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/"
)
}
and I get the following error:
[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
I tried several alternatives but they give me the same error...
I've checked this article and this SO question
And also tried saving the user and password on an external file, as it's explained here and here.
any idea?
-- edit to clarify --
I changed the real url because it's not a public repo I'm working with... The real url is there and the pom that sbt is trying to find does exist...
ps: BTW.. where are sbt scaladocs???
You need to tell SBT what repository you want to publish to:
publishTo := Some("testmx public" at "http://deploy.cloud.testmx.com:8081/nexus")
Additionally if you don't want to keep your credentials in the Build file, you can tell it to retrieve them locally by adding the line:
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"),
And in your ~/.ivy2
directory create a .credentials
file like this:
realm=Sonatype Nexus Repository Manager
host=deploy.cloud.testmx.com
user=testmx
password=testmx@testmx
See https://github.com/harrah/xsbt/wiki/Publishing for more
There were two problems when passing the credentials.
The first was that I was passing the wrong Realm. (Thanks to Alex Varju for this one)
You have to pass the same Realm that the server is sending you when trying to log (Just press ctrl-shift-I or F12 on chromium and got to network to have a look at it)
The second problem is that I was passing the port number, and sbt doesn't seem to like that...
So, in the end I did it like this and it works ok:
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/"
)
Settings your credentials in a different file, as expected, worked ok too with the same modifications...
Thanks to all for your answers
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With