2013-05-06 9 views
15

Uczę się Clojure i pochodzę z tła Ruby.Instalowanie bibliotek z leiningen bez tworzenia projektu

Szukam czegoś analogicznego do gem install <library>. Różne inkantacje z lein install wydają się nie pasować do tego rachunku.

Czy istnieje sposób, aby po prostu zainstalować bibliotekę lokalnie, aby można było odwoływać się do REPL bez potrzeby tworzenia projektu?

Odpowiedz

6

Wygląda na to, że chcesz zainstalować bibliotekę z leinem. Oto plugin, zainstalować i używać jak

lein localrepo install <filename> <[groupId/]artifactId> <version> 
3

Java, a więc clojure nie ogólnie mają ideę globalnie zainstalowanych bibliotek. Powinieneś zawsze tworzyć ścieżkę klas z minimalnym zestawem zależności. Musisz jakoś określić tę ścieżkę i zarządzać nią, a najłatwiej to zrobić z leiningen, który wymaga projektu.

Leiningen automatyzuje proces pobierania zdalnych bibliotek i umieszczania ich w lokalnym repozytorium, co jest nieco analogiczne do instalacji gem, ale te biblioteki nie stają się automatycznie dostępne dla REPL.

Najprostszym sposobem, aby zestaw bibliotek był zawsze dostępny, jest projekt "scratch", którego używa się do eksperymentów REPL przed rozpoczęciem nowego projektu. To nie jest zbyt dużo narzutów.

3

W Lein 2 można zaktualizować profiles.clj z pakietu, który chcesz zainstalować:

~\user\.lein\profiles.clj 

Przy pierwszym uruchomieniu dowolnego projektu z Lein, lokalne repo będzie aktualizowana co zostało incereased w profilach. clj.

Czasami po prostu uruchamiam lein deps, nie będąc w folderze projektu, spowoduje to aktualizację lokalnego repo dla Ciebie.

W ten sposób możesz dodać dowolną bibliotekę do swojego projektu.clj lub wywołać ją z repl i zostanie wyodrębniona z lokalnego repo.

6

Jeśli Twoim celem jest tylko ładowanie bibliotek w REPL, rozważ użycie alembic. Ładuje dynamicznie ścieżki klasy, rozwiązuje zależności i automatycznie pobiera biblioteki z repozytoriów.

Oto przypadek użycia:

(require 'alembic.still) 
(alembic.still/distill '[enlive "1.1.1"]) 

To po prostu wymaga, aby dodać następujący wpis do swojej .lein/project.clj:

{:dev {:dependencies [[alembic "0.1.1"]]}} 

Zobacz this answer.