wie bekomme ich sbt, ein lokales maven proxy repository (Nexus) zu benutzen?
Habe ich eine sbt (Scala) - Projekt, das derzeit zieht Artefakte aus dem web. Wir möchten den Weg zu einem corporate-einheitlichen Nexus-repository, das würde die cache-Artefakte. Aus dem Nexus-Dokumentation, ich verstehe, wie zu tun, dass für Maven-Projekte. Aber sbt offensichtlich einen anderen Ansatz nutzt. (Ich verstehe Ivy beteiligt ist, irgendwie, aber ich habe es nie benutzt und kann nicht verstehen, wie es funktioniert.)
Wie kann ich sagen, sbt und/oder die zugrunde liegenden Efeu zu verwenden, die corporate Nexus repository-system für alle Abhängigkeiten? Ich möchte die Antwort zu verwenden irgendeine Art von Projekt-Ebene Konfigurations-Datei, so dass neue Klone von unserem Quellcode-repository wird automatisch den proxy. (I. e., ausmisten über mit dem pro-user-config-Dateien im dot-Verzeichnis ist nicht lebensfähig.)
Dank!
InformationsquelleAutor der Frage Harlan | 2010-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schritt 1: Befolgen Sie die Anweisungen auf Detaillierte Themen: Proxy-Repositoriesdie ich habe, zusammengefasst und ergänzt unten:
(Wenn Sie mit Artifactory, können Sie diesen Schritt überspringen.) Erstellen Sie eine völlig getrennt Maven-proxy-repository (oder die Gruppe) auf Ihr corporate Maven-repository, um einen proxy ivy-Stil repositories wie diese beiden wichtigsten:
Dies ist nötig, da manche repository-Manager nicht in den Griff Ivy-Stil-und Maven-Stil-repositories zusammengemischt.
Erstellen Sie eine Datei
repositories
listing sowohl Ihre wichtigsten Unternehmens-repository und jeder extra ein, die Sie in Schritt 1 erstellt haben, in das format " unten dargestellt:Entweder speichern Sie die Datei in der
.sbt
- Verzeichnis in Ihrem home-Verzeichnis, oder geben Sie es auf die sbt Befehlszeile:Eine gute Nachricht für diejenigen, die mit älteren Versionen von sbt: obwohl, in der sbt-0.12.0-launcher-jar-zumindest die boot-Eigenschaften von Dateien für die älteren sbt-Versionen enthalten nicht die benötigte Zeile (die, die erwähnt
repository.config
), wird es noch Arbeit für diese Versionen von sbt, wenn Sie die Bearbeitung dieser Dateien zum hinzufügen der gewünschten Zeile, und Verpacken diese in das sbt-0.12.0-launcher-jar! Dies ist, weil das feature implementiert ist, im launcher, nicht im sbt selbst. Und das sbt-0.12.0-launcher wird behauptet, um in der Lage zu starten alle Versionen von sbt, gleich wieder auf 0,7!Schritt 2: Um sicherzustellen, dass externe repositories nicht verwendet wird, entfernen Sie den Standard-repositories von Ihrem Resolver. Dies kann in einer von zwei Möglichkeiten:
-Dsbt.override.build.repos=true
erwähnt, auf der Detaillierte Themen-Seite oben. Dadurch werden die Archive, die Sie in der angegebenen Datei zu überschreiben repositories angegeben, in einem Ihrem sbt-Dateien. Dies kann nur dann funktionieren, sbt 0,12 und oben, obwohl - ich habe nicht versucht es noch nicht.fullResolvers := Seq(
resolver(s) für Ihr Firmen-maven-repositories)
in deinem build-Dateien, stattresolvers ++=
oderresolvers :=
oder was auch immer Sie verwendet, um zu verwenden.InformationsquelleAutor der Antwort Robin Green
OK, mit etwas Hilfe von Mark Harrah ' auf die sbt-mailing-Liste, ich habe eine Antwort, die funktioniert.
Meine build-Klasse sieht nun wie folgt aus (plus einige andere repos):
Nun, wenn ich löschen Squeryl Baum von meiner Maschine
.ivy2/cache
Verzeichnis, sbt versucht, es zu packen aus der Nexus-Baum mit der entsprechenden URL. Problem gelöst!InformationsquelleAutor der Antwort Harlan
Alles, was Sie brauchen, ist die Definition einer property-Datei
sbt.boot.properties
denen Sie:Hinweis: diese
sbt.boot.properties
Datei ist inspiriert von:sbt-0.74
selbst!Habe ich kommentiert jede externe Maven-repository, definition, und fügte hinzu, eine Referenz zu meiner eigenen Nexus-Maven-repo.
Definieren sbt.Fledermaus-wrapper (um sicher zu sein, zu geben Ihre
sbt.boot.properties
) wie:Und Ihre sbt herunterladen Artefakte nur aus:
Gerade getestet, die zu Hause mit einem alten Nexus opensource 1.6 hatte ich ausgeführt, java 1.6, sbt07.4
Gibt:
Wenn ich versuche, eine lustige Wert in der sbt.boot.Eigenschaften Datei:
Damit es nicht begrenzen sich auf das zwei-repo habe ich definiert:
(Ich kommentierte alles andere:
local
maven-local
...)Wenn ich kommentieren alle repositories und legte eine komisch-Wert (2.7.9) für die scala-version in der
sbt.boot.properties
ich tun, um (wie der OP) hastWenn ich 2.7.7 (während immer noch alle repo kommentiert), ja, es wird nicht ein Fehler generiert:
Aber das ist nur, weil es schon runtergeladen hatte scala2.8.0 bei meinen früheren versuchen.
Wenn ich entfernen, die Bibliothek von meinem
project/boot
Verzeichnis, dann wird eine Ausnahme geworfen:InformationsquelleAutor der Antwort VonC
Gut, das hat nervte mich für eine Weile so fand ich einen Kerl, der geschrieben hat, ein SBT-plugin für maven auf github aufgerufen maven-sbt so alle Sie tun müssen ist, fügen Sie es in Ihrem Plugin-Projekt und machen Ihr Projekt mixin mit maven.MavenDependencies und alle Ihre Operationen wie aktualisieren und veröffentlichen-lokale Arbeit mit Ihrem lokalen maven. Das schöne daran ist, wenn Sie wie ich sind, Ihre org alle maven. So, alle libs sind in Ihr lokales maven repo, aber wenn aus irgendeinem Grund Sie bauen mit sbt zuerst, dann Sie ein Bündel oder Gläser in ivy zu. Was für eine Verschwendung von Speicherplatz und Zeit, da Sie noch brauchen, um Sie für Ihre maven-builds.
Sagte, ich wünschte, diese waren gebaut in die sbt-also ich würde nicht brauchen, fügen Sie es zu jedem Projekt. Vielleicht über einen Prozessor mit mindestens. Er erwähnt eine Sache, die ich gelesen habe, dass er möchte hinzufügen, dass es bis 0,9, aber ich habe nicht in der Lage, es zu finden.
InformationsquelleAutor der Antwort ozone
Bearbeiten Sie die config-Datei in sbt_home/conf "sbtconfig.txt"
fügen Sie zwei line -
dem repo.Eigenschaften Inhalt ist
InformationsquelleAutor der Antwort foxundermon
Bekam ich diese Fehlermeldung, denn ich hatte eine leere Datei in
~/.sbt/repositories
. Sowohl das hinzufügen von repositories in die Datei und das entfernen der Datei hat das problem gelöst.InformationsquelleAutor der Antwort mehtunguh