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.

War es hilfreich?

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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top