Как использовать проверенные банки с leiningen

У нас есть некоторые сторонние банки, зарегистрированные в нашем проекте. Мы хотели бы добавить их в classpath. Это. Мы не хотим настраивать локальный репозиторий maven (потому что это нарушит нашу философию "проверить и запустить" ). Каждый разработчик должен будет создать собственное репозиторинг maven, отличный от проекта.

Есть ли способ сделать это или это? Большинство ответов, которые я видел, говорят, чтобы настроить локальный maven, который нам не нужен, или просто нужно добавить банку в путь к классам.

Ответ 1

Вам нужно будет настроить локальный репозиторий maven, но это может быть простой каталог в каталоге проектов, который вы затем проверяете на исходный элемент управления. (Что будет поддерживать вашу политику "проверить и запустить" )

Начиная с Leiningen 2.2.0, функциональность для развертывания банок встроена с задачей lein deploy. Таким образом, задача упростилась из предыдущих версий.

Создайте каталог внутри вашего проекта, называемый в этом примере myrepo. (Имя произвольно)

Добавьте запись :repositories в свой project.clj файл с указанием пути к созданному вами локальному каталогу.

:repositories [["localrepo1" "file:myrepo"]]

Разверните свою свободную плавучую банку на репо.

lein deploy localrepo1 com.blueant/fancypants 1.0.1 fancypants.jar

И добавьте свою зависимость к вашему вектору project.clj :dependencies как обычно.

:dependencies [[com.blueant/fancypants "1.0.1"]]

Задача развертывания будет генерировать контрольные суммы и структуру каталогов, необходимые для привязки к разрешению зависимости лейна. Вы можете проверить, правильно ли ваша фляга загружена командой lein deps :tree.

Примечание. Пути файлов в :repositories отформатированы как URL-адреса. Итак, /Users/user1/Desktop - file:///Users/user1/Desktop, а локальный каталог внутри проекта myrepo - file:myrepo.

Ответ 2

Я хотел бы подробно обсудить @Jared314 отличный ответ, который также помог мне.

Ниже приведена script, которая автоматизирует процесс добавления нескольких банок из локальной папки 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

Список зависимостей Leiningen, которые можно добавить в project.clj, сохраняется в dependencies.log.

Перед запуском записи script, :repositories в project.clj необходимо обновить, чтобы можно было считывать имя и пароль репозитория из среды:

  :repositories [["localrepo1" {:url "file:myrepo"
                                :username :env/localrepo_username
                                :password :env/localrepo_password}]]

Это предотвратит отображение приглашения пароля репозитория при запуске script.

Ответ 3

Этот вопрос уже ответил здесь.

Это действительно возможно, но есть причина, почему существует maven и управление зависимостями. Если у вас много зависимостей, изменяющих версии, рекомендуется создать репо.