Wie erreiche ich ein gesichertes Nexus mit sbt?
Ich versuche, auf einem Nexus-repository-manager, die erfordert einige grundlegende Authentifizierung. Alles funktioniert von Maven2, aber wenn ich versuche zu konfigurieren Sachen im SBT kann es nicht finden der Artefakte. Es ist mit einem custom-repository-pattern (siehe in diesem Zusammenhang Frage), aber ich glaube nicht, dass zählen sollte. In jedem Fall ist die relevante Konfiguration ist hier.
Projekt.scala:
val snapshotsName = "Repository Snapshots"
val snapshotsUrl = new java.net.URL("http://nexusHostIp:8081/nexus/content/repositories/snapshots")
val snapshotsPattern = "[organisation]/[module]/[revision]-SNAPSHOT/[artifact]-[revision](-[timestamp]).[ext]"
val snapshots = Resolver.url(snapshotsName, snapshotsUrl)(Patterns(snapshotsPattern))
Credentials(Path.userHome /".ivy2" /".credentials", log)
val dep = "group" % "artifact" % "0.0.1" extra("timestamp" -> "20101202.195418-3")
~/.ivy2/.Anmeldeinformationen:
realm=Snapshots Nexus
host=nexusHostIp:8081
user=nexususername
password=nexuspassword
Laut eine ähnliche Diskussion in der SBT-Nutzer-Gruppe dies sollte gut funktionieren, aber ich bekomme Folgendes, wenn ich versuche zu bauen.
==== Repository Snapshots: tried
[warn] -- artifact group#artifact;0.0.1!artifact.jar:
[warn] http://nexusHostIp:8081/nexus/content/repositories/snapshots/group/artifact/0.0.1-SNAPSHOT/artifact-0.0.1-20101202.195418-3.jar
Ich bin mir ziemlich sicher, dass dies eine Anmeldeinformationen problem und nicht etwas anderes, weil ich Sie schlagen kann, der URL, der es sagt, es wird versucht, direkt und laden Sie die jar - (nach der Authentifizierung).
Habe ich auch schon versucht deklarieren Sie die Anmeldeinformationen inline (auch wenn es weniger als ideal) etwa so:
Credentials.add("Repository Snapshots", "nexusHostIp", "nexususername", "nexuspassword")
InformationsquelleAutor der Frage Bryan J Swift | 2010-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist was ich getan habe (sbt 0.13 + artifactory - setup sollte so ähnlich wie beim nexus):
1) Bearbeitet die Datei ~/.sbt/repositories wie hier angegeben: http://www.scala-sbt.org/0.13.0/docs/Detailed-Topics/Proxy-Repositories.html
2) Gesperrt mein artifactory, um den anonymen Zugriff deaktivieren.
3) Erstellt eine credentials-Datei in ~/.sbt/.Anmeldeinformationen
4) Erstellt eine Datei unter ~/.sbt/0.13/plugins/Anmeldeinformationen.sbt dass die Leitungen die Standard-Anmeldeinformationen
Nun, wenn mein Projekt geladen sbt trifft artifactory, wie normal.
Dem Grund habe ich es auf diese Weise zu halten, ist die repository-Definitionen etc. aus dem Projekt-Dateien zu ermöglichen, teams zu haben, die Flexibilität (Sie können einen internen server zu dienen-in-progress-Artefakte, etc).
-Austen
InformationsquelleAutor der Antwort Austen Holmes
UPDATE: Diese Antwort funktioniert nicht in den letzten sbt-Versionen - siehe Austen ' s Antwort statt.
Okay ich habe endlich dieses aussortiert.
snapshotsName
kann alles sein.realm
.Anmeldeinformationen müssen Sie die HTTP-Authentifizierung Reich, das zeigt sich beim Versuch, auf die URL des repository (nexus in meinem Fall).realm
ist auch der erste parameter vonCredentials.add
. So, die Zeile sollte wurdenDen Hostnamen nur die ip oder den DNS-Namen. So .Anmeldeinformationen
host
ist nurnexusHostIp
ohne die port-Nummer.Also die arbeiten Projekt-Konfiguration ist:
Mit ein .credentials-Datei, die sieht so aus:
Wo "Sonatype Nexus Repository Manager" - ist das HTTP Authentication realm.
InformationsquelleAutor der Antwort Bryan J Swift
Folgenden die SBT Documetation:
Es gibt zwei Möglichkeiten zum angeben von Anmeldeinformationen für ein solches repository:
Inline
credentials += Credentials("Some Nexus Repository Manager", "my.artifact.repo.net", "admin", "password123")
Externe Datei
Die credentials-Datei ist eine properties-Datei mit dem Schlüssel Reich, host, Benutzer und Passwort. Zum Beispiel:
InformationsquelleAutor der Antwort luckydonald
Wenn SBT launcher nicht herunterladen, eine neue version der SBT von deinem proxy, und dass
~/.sbt/boot/update.log
zeigt, dass Sie immer 401-authentication-Fehler, können Sie die Umgebungsvariable SBT_CREDENTIALS, um anzugeben, wo die ivy-credential-Datei ist.Entweder von diesen arbeiten soll, und laden Sie die neue sbt-version:
SBT_CREDENTIALS='/home/YOUR_USER_NAME/.ivy2/.credentials' sbt
export SBT_CREDENTIALS="/home/YOUR_USER_NAME/.ivy2/.credentials"
in Ihrem.bashrc
(oder.zshrc
), starten Sie eine neue shell-Sitzung, und führen Sie dannsbt
(Sie müssen die
~/.ivy2/.credentials
Datei setup wie die anderen Antworten hier gezeigt hat)Quelle: https://github.com/sbt/sbt/commit/96e5a7957c830430f85b6b89d7bbe07824ebfc4b
InformationsquelleAutor der Antwort Jacob Wang
Dieser arbeitete für mich. Ich bin mit SBT-version 0.13.15:
~/.ivy2/.my-credentials
(host ohne port):build.sbt
(nexus-url mit port):InformationsquelleAutor der Antwort Leonardo Bayona
Check für alle Dateien, die mit Anmeldeinformationen.
Für mich, ich hatte ein neues Projekt in sbt 1.0 (anstelle des guten alten 0.13), wo ich eine
~/.sbt/1.0/global.sbt
- Datei mit meinen Zugangsdaten, die ich vergessen hatte. So nach einer obligatorischen Passwort zu ändern, die artifactory downloads kaputt war und mein Konto sperren.Wäre schön, wenn die Kette von Anmeldeinformationen und Dateien, die Sie problemlos überprüft werden können. Wäre auch schön, wenn SBT war ein bisschen vorsichtiger sein und zuerst zu überprüfen, wenn die Authentifizierung/Autorisierung korrekt ist, bevor Sie tot download X-Dateien und mein Konto sperren nach 3 misauthenticated versucht.
InformationsquelleAutor der Antwort dr jerry