[英]How to use local dependencies in Clojure?
我正在開發一個庫和一個使用這個庫的應用程序。
我沒有這個庫的任何遠程存儲庫,它只作為常規項目存儲在GitHub上。
在我的應用程序中,我想使用這個庫作為依賴,我正在考慮的是有這樣的結構:
.
├── README.md
├── project.clj
├── repo
├── src
├── target
├── libraries
│ └── my-library
└── test
其中my-library
是my-library
的git submodule
。 如何讓我的應用程序知道這種依賴?
2016年的解決方案是什么?
不需要將lib包含為git子模塊。 您可以在本地“釋放”my-library項目。
只需轉到my-library
項目文件夾並運行lein pom; lein jar; lein install
lein pom; lein jar; lein install
lein pom; lein jar; lein install
。 這里的關鍵部分是lein install
,它將jar和pom安裝到本地存儲庫; 通常為〜/ .m2。
轉到使用此庫的項目,並在project.clj
中將其聲明為依賴項,如:dependencies [[my-library "version"]]
,它應該可以工作。
編輯: Simlarly,如果你使用Boot ,你可以運行boot pom; boot jar; boot install
boot pom; boot jar; boot install
更簡單的解決方案是使用lein checkouts
如下所示: https : //github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md#checkout-dependencies
在項目的頂層創建一個dir checkouts
出(與src
目錄並行)。 在checkouts
,只需使用庫代碼創建指向項目目錄的符號鏈接。 例如,考慮一個項目clj
和一個庫tupelo
drwxrwxr-x 10 alan alan 4096 Jan 5 12:09 clj/
drwxrwxr-x 11 alan alan 4096 Jan 9 20:01 tupelo/
項目clj
看起來像這樣:
> d clj clj/* clj/checkouts/*
drwxrwxr-x 10 alan alan 4096 Jan 12 10:36 clj/
drwxrwxr-x 2 alan alan 4096 Oct 14 09:23 clj/checkouts/
lrwxrwxrwx 1 alan alan 17 Oct 30 16:44 clj/checkouts/tupelo -> /home/alan/tupelo/
drwxrwxr-x 2 alan alan 4096 Aug 31 10:05 clj/doc/
-rw-rw-r-- 1 alan alan 11219 Aug 31 10:05 clj/LICENSE
-rw-rw-r-- 1 alan alan 794 Jan 5 12:09 clj/project.clj
-rw-rw-r-- 1 alan alan 457 Aug 31 10:05 clj/README.md
drwxrwxr-x 2 alan alan 4096 Jan 3 09:01 clj/resources/
drwxrwxr-x 3 alan alan 4096 Aug 31 10:05 clj/src/
drwxrwxr-x 8 alan alan 4096 Nov 14 16:26 clj/target/
drwxrwxr-x 3 alan alan 4096 Sep 29 22:31 clj/test/
現在,在構建clj
項目時,它將(總是)使用來自~/tupelo
tupelo的源代碼而不是clojars,maven等。這意味着您不必每次都從lib tupelo
制作&(重新)安裝jar您進行了要在clj
使用的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.