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.

Author: Community, 2010-06-29

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.

 30
Author: Joachim Hofer,
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.

 41
Author: Mark Tye,
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
 8
Author: opyate,
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
 3
Author: Mark O'Connor,
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)
 3
Author: Richard Gomes,
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.

 2
Author: Joachim Hofer,
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)

 2
Author: Milso,
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