[英]How do I use checked-in jars with leiningen
我們在我們的項目中簽了一些第三方罐子。 我們想將它們添加到類路徑中。 而已。 我們不想建立一個本地的maven回購(因為這會破壞我們的'檢查和運行'理念)。 每個開發人員都必須設置自己的maven倉庫,與項目不同。
有辦法做到這一點還是這樣? 我見過的大多數答案都說要設置一個我們不想要或只需要在類路徑中添加jar的本地maven。
您需要設置一個本地maven存儲庫,但這可以是項目目錄中的一個簡單目錄,然后您可以檢入源控件。 (這將保持您的“簽出和運行”政策)
從Leiningen 2.2.0開始,部署jar的功能內置了lein deploy
任務。 因此,該任務已從先前版本簡化。
在項目中創建一個名為myrepo
。 (這個名字是任意的)
在project.clj
文件中添加:repositories
條目,其中包含您創建的本地目錄的路徑。
:repositories [["localrepo1" "file:myrepo"]]
將自由浮動的jar部署到repo。
lein deploy localrepo1 com.blueant/fancypants 1.0.1 fancypants.jar
並且,將您的依賴項添加到project.clj :dependencies
向量正常。
:dependencies [[com.blueant/fancypants "1.0.1"]]
部署任務將生成與lein依賴關系解析相關聯的校驗和和目錄結構。 您可以使用lein deps :tree
命令驗證jar是否已正確加載。
注意: :repositories
中的文件路徑格式為URL。 因此, /Users/user1/Desktop
是file:///Users/user1/Desktop
,以及項目中的本地目錄, myrepo
是file:myrepo
。
我想詳細說明@Jared314的優秀答案對我有幫助。
下面是一個腳本,它自動將多個jar從本地lib
文件夾添加到本地存儲庫的過程:
#!/bin/sh
export LOCALREPO_USERNAME=
export LOCALREPO_PASSWORD=
for file in lib/*.jar
do
name=$(basename "$file")
basename=${name%.jar}
echo "Deploying $basename"
artifactId="local/$basename"
lein deploy localrepo1 $artifactId 1.0 $file
echo "[$artifactId \"1.0\"]" >> dependencies.log
done
可以添加到project.clj
的Leiningen依賴項列表存儲在dependencies.log
。
在運行腳本之前,必須更新project.clj
:repositories
條目,以允許從環境中讀取存儲庫用戶名和密碼:
:repositories [["localrepo1" {:url "file:myrepo"
:username :env/localrepo_username
:password :env/localrepo_password}]]
這將阻止在運行腳本時顯示存儲庫密碼提示。
這個問題已在這里得到解答。
這確實是可能的,但是存在maven
和依賴管理存在的原因。 如果您有許多依賴項,那么更改版本會創建一個repo,這是推薦的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.