Wie pro Benutzer Ivy Cache-Verzeichnis konfigurieren oder systemweit?
Frage
Ich bin mit SBT als mein Build-Tool ein Scala-Projekt für den Bau.
Mein Problem ist, ich kann nicht configure SBT Downloads Abhängigkeiten zu meinem Benutzerverzeichnis. Deshalb ich suche pro Benutzer oder noch besser eine systemweite Einstellung SBT zu sagen, das Ivy-Cache-Verzeichnis woanders zu setzen.
Mit Maven gibt es den Pro-Benutzer-settings.xml, die verwendet werden können, das lokale Repository zu konfigurieren.
Ich habe Frage lesen Wie die Lage von Ivys Cache außer Kraft zu setzen? und die Antworten, aber es scheint es nur beschrieben, wie die Einstellung auf einer Basis pro Projekt konfigurieren.
Wenn es keine Alternative, die ich für eine pro-Projekteinstellung gehen würde, aber ich habe nicht die Antwort aus der genannten Frage an der Arbeit. Einige Details würden sehr willkommen sein, zum Beispiel, wo die ivysettings.xml zu setzen. Ich habe es in das Stammverzeichnis des Projekts und es hat nicht funktioniert.
Lösung
Sie können einfach eine Umgebungsvariable auf Ihren sbt Start Shell-Skript hinzufügen:
java -Dsbt.ivy.home=/tmp/.ivy2/ ...
Siehe Library Management in der offiziellen Dokumentation .
Andere Tipps
Die sbt.ivy.home
Eigenschaft ist nur die Hälfte der Lösung. Es steuert, wo die sbt Launcher Downloads sbt selbst (und damit verbundene Abhängigkeiten wie der scala Compiler und Bibliothek, etc.) Wie von Joachim Hofer erwähnt, es hat keinen Einfluss darauf, wo die Abhängigkeiten erklärten von Ihrem Projekt heruntergeladen erhalten.
Zur Änderung , die Standort, müssen Sie die ivy.home
Eigenschaft festgelegt. Also, um Joachim erste Lösung zu erweitern, würden Sie beiden Systemeigenschaften festgelegt:
java -Dsbt.ivy.home=/tmp/.ivy2/ -Divy.home=/tmp/.ivy2/ -jar `dirname $0`/sbt-launch.jar "$@"
Mit diesen Eigenschaften wird der Launcher sowohl des Projektes herunterladen und SBT Abhängigkeiten zum /tmp/.ivy2/
Verzeichnis. Natürlich können Sie sie in separaten Verzeichnissen als auch setzen.
Sie sollten verwenden sbt-Extras , wenn Sie nicht bereits tun.
Dann ist es einfach ein Flag Sie es passieren:
sbt -ivy /path/to/.ivy2
Lage von Efeu-Dateien
ich normalerweise die put ivy.xml und ivysettings.xml Dateien neben von Build-Datei wie folgt:
build.xml
ivy.xml
ivysettings.xml
Die Efeu Aufgaben lösen und abrufen sollten beide Dateien finden.
Zum Beispiel:
<target name="init" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="lib/[conf]/[artifact].[ext]"/>
</target>
Seltsam, dass es nicht für Sie arbeiten.
Anwenderspezifische Einstellungen
Sie können die maven Einstellungsdatei in ein paar Möglichkeiten emulieren
1) umfassen Richtlinie im Rahmen des Projektes ivysettings.xml
<ivysettings>
<include file="${user.home}/.ivy2/my-ivysettings.xml"/>
</ivysettings>
2) Set Standort aus der Build-Datei
<target name="init" description="--> retrieve dependencies with ivy">
<ivy:settings file="${user.home}/.ivy2/my-ivysettings.xml" />
<ivy:retrieve pattern="lib/[conf]/[artifact].[ext]"/>
</target>
3) Ich habe noch nie versucht, aber ich denke, man kann die Standardposition überschreibt eine ANT-Eigenschaft mit
ant -Divy.settings.file=$HOME/.ivy2/my-ivysettings.xml
Sie können Ihr Home-Verzeichnis mit Path.userHome.absolutePath
abrufen, wie unten dargestellt:
resolvers += Resolver.file("Local", file( Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns)
Ich nehme an, dass Sie auch die Umgebungsvariablen abrufen können System.getenv
und verketten in der gleichen Art und Weise verwenden, wie unten dargestellt:
resolvers += Resolver.file("Local", file( System.getenv("IVY_HOME") + "/whatever/it/is"))(Resolver.ivyStylePatterns)
Für die Bearbeitung der Cache-Position während des SBT selbst zu starten, finden Sie unter Sbt Launcher Konfiguration in der offiziellen Dokumentation.
Im Grunde ist es zur Arbeit kommen systemweite, man müßte:
- Legen Sie eine Konfigurationsdatei mit dem Namen
sbt.boot.properties
irgendwo, wo es zugänglich systemweit (der Standard eines unter dem Link oben). - Rufen Sie das Startprogramm mit dem zusätzlichen Systemeigenschaft
sbt.boot.properties
Satz Nummer zu Ihrer Konfigurationsdatei. - Stellen Sie den
cache-directory
Eintrag (im[ivy]
Abschnitt) an die Stelle der Efeu-Cache.
Diese Konfiguration scheint nicht zu normaler SBT Nutzung zu übertragen, aber leider.
sbt -ivy /tmp/.ivy2 compile
Referenz: Mann sbt
Optionen: -ivy Pfad: Pfad zum lokalen Ivy Repository (Standard: ~ / .ivy2)