Jak skonfigurować katalog Ivy cache dla każdego użytkownika lub całego systemu?
Używam SBT jako mojego narzędzia do budowania projektu Scala.
Mój problem polega na tym, że nie mogę skonfigurować SBT do pobierania zależności do mojego katalogu domowego użytkownika. Dlatego szukam dla każdego użytkownika lub nawet lepiej systemowego ustawienia, aby powiedzieć SBT, aby umieścić katalog pamięci podręcznej Ivy gdzie indziej.
W maven są ustawienia dla każdego użytkownika.xml, który może być użyty do skonfigurowania lokalnego repozytorium.
Przeczytałem pytanie jak obejść położenie Ivy ' s Cache? i to jest odpowiedź, ale wygląda na to, że opisuje tylko jak skonfigurować ustawienie na podstawie każdego projektu.
Jeśli nie ma alternatywy, wybrałbym ustawienie per-project, ale nie dostałem odpowiedzi ze wspomnianego pytania do pracy. Niektóre więcej szczegółów byłoby mile widziane, na przykład, gdzie umieścić ivysettings.xml. Włożyłem go do katalogu głównego projektu i nie zadziałało.
7 answers
Możesz po prostu dodać zmienną środowiskową do skryptu SBT launch shell:
java -Dsbt.ivy.home=/tmp/.ivy2/ ...
Patrz Zarządzanie biblioteką w oficjalnej dokumentacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-16 18:07:12
Właściwość sbt.ivy.home
jest tylko połową rozwiązania. Kontroluje, gdzie SBT launcher pobiera sam sbt (i powiązane zależności, takie jak kompilator i biblioteka scala, itp.) Jak zauważył Joachim Hofer, nie ma to wpływu na to, skąd pobierane są zależności zadeklarowane przez twój projekt.
Aby zmienićtę lokalizację , musisz ustawić właściwość ivy.home
. Aby powiększyć pierwsze rozwiązanie, należy ustawić obie właściwości systemu:
java -Dsbt.ivy.home=/tmp/.ivy2/ -Divy.home=/tmp/.ivy2/ -jar `dirname $0`/sbt-launch.jar "$@"
Z tymi właściwościami, launcher pobierze zależności twojego projektu i sbt do katalogu /tmp/.ivy2/
. Oczywiście można je również umieścić w osobnych katalogach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-05 02:26:13
Powinieneś użyć SBT-extras Jeśli jeszcze tego nie zrobiłeś.
Wtedy to po prostu flaga, którą mijasz:
sbt -ivy /path/to/.ivy2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-09 07:35:45
Lokalizacja plików ivy
Zwykle wkładam bluszcz.XML i ivysettings.pliki xml obok pliku budowania w następujący sposób:build.xml
ivy.xml
ivysettings.xml
Zadania ivy resolve i retrieve powinny znaleźć oba pliki.
Na przykład:
<target name="init" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="lib/[conf]/[artifact].[ext]"/>
</target>
Dziwne, że to nie działa na Ciebie.
Ustawienia użytkownika
Możesz emulować plik ustawień Mavena na kilka sposobów
1) włączenie dyrektywy do projektu ivysettings.xml
<ivysettings>
<include file="${user.home}/.ivy2/my-ivysettings.xml"/>
</ivysettings>
2) Ustaw lokalizację z pliku kompilacji
<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) nigdy nie próbowałem tego, ale myślę, że można zastąpić domyślną lokalizację za pomocą właściwości ANT
ant -Divy.settings.file=$HOME/.ivy2/my-ivysettings.xml
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 20:13:45
Możesz odzyskać swój katalog domowy używając Path.userHome.absolutePath
, Jak pokazano poniżej:
resolvers += Resolver.file("Local", file( Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns)
Przypuszczam, że można również pobierać zmienne środowiskowe za pomocą System.getenv
i łączyć w ten sam sposób, jak pokazano poniżej:
resolvers += Resolver.file("Local", file( System.getenv("IVY_HOME") + "/whatever/it/is"))(Resolver.ivyStylePatterns)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-04 15:21:11
Aby edytować lokalizację pamięci podręcznej podczas samego rozruchu SBT, zobacz SBT Launcher Configuration w oficjalnej dokumentacji.
W zasadzie, aby go uruchomić w całym systemie, musisz:
- umieść plik konfiguracyjny o nazwie
sbt.boot.properties
gdzieś, gdzie jest dostępny w całym systemie(domyślny jest wymieniony w linku powyżej). - wywołaj launcher z dodatkową właściwością systemową
sbt.boot.properties
ustawioną tak, aby wskazywała na Twój plik konfiguracyjny. - Ustaw wpis
cache-directory
(w sekcji[ivy]
) do lokalizacji pamięci podręcznej ivy.
Ta konfiguracja nie wydaje się jednak przenosić do normalnego użytkowania SBT, niestety.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-22 20:24:01
sbt -ivy /tmp/.ivy2 compile
Reference: man SBT
Opcje: -ivy path: ścieżka do lokalnego repozytorium Ivy (domyślnie:~/.ivy2)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-21 11:40:31