2016-01-31 17 views
3

project.clj,當你看到喜歡的東西:混亂周圍雷音:依賴和:插件

:dependencies [[org.clojure/clojure  "1.8.0"] 
       [org.clojure/clojurescript "1.7.228"] 
       [com.cemerick/piggieback "0.2.1"] 
       [org.clojure/tools.nrepl "0.2.10"] 
       [org.clojure/core.async "0.2.374"]] 

和:

:plugins [[org.bodil/lein-noderepl "0.1.11"] 
      [lein-cljsbuild   "1.1.2"] 
      [lein-npm     "0.6.1"] 
      [lein-repls    "1.9.5"] 
      [lein-doo     "0.1.6"]] 
  1. 在哪裏,這些包是從哪裏來的?它完全是Clojars和Maven嗎? 可以將Lein配置爲從GitHub獲取它們嗎?
  2. 當這些軟件包被添加到您的項目中時,只是將它們下載並添加到您的java類路徑中?或其他事情發生了嗎?
+1

相關:http://stackoverflow.com/q/4615592/124319 – coredump

回答

4
  1. 在哪裏,這些包是從哪裏來的?

What are the leiningen default repositories?

您可以使用類似lein-git-deps以從GitHub下載的依賴,但我會建議使用Maven回購回答得很好,因爲這是個什麼Leiningen生態系統是圍繞。

  1. 難道只是下載它們並將它們添加到您的java類路徑嗎?或者還有其他事情發生?

這值得進一步討論。例如,當您開始一個leiningen REPL時,Leiningen將首先在其當地的~/.m2存儲庫中查找:dependencies中的所有依賴關係。如果它找不到它們中的任何一個,它將向該項目的每個存儲庫發出請求,以查看它們是否具有該依賴項的副本。如果他們這樣做,Leiningen將下載它,然後遞歸下載依賴關係依賴關係等等。一旦下載了所有的依賴關係,Leiningen就會將它們全部添加到應用程序的類路徑中並啓動應用程序。

有關Leiningen的一點要記住的是,有兩個JVM和兩個類路徑,一個用於您的應用程序,另一個用於Leiningen。當您將依賴關係添加到:dependencies時,它們會進入您的應用程序的類路徑,當它們被添加到:plugins時,它們將轉到Leiningen的類路徑。