簡體   English   中英

我如何使用與leiningen簽到的罐子

[英]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/Desktopfile:///Users/user1/Desktop ,以及項目中的本地目錄, myrepofile: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM