Как настроить Leiningen для использования корпоративного репозитория?
Мы размещаем корпоративный репозиторий, который выступает в качестве прокси-сервера для известных репозиториев (например, Maven Central и Clojars). Я хочу, чтобы Leiningen попал в корпоративный репозиторий в первую очередь. Только когда корпоративный репозиторий не сможет предоставить артефакт, Leiningen должен спросить стандартные репозитории. Это должно быть поведение по умолчанию для всех моих проектов. Какую конфигурацию мне нужно сделать?
Я добавил корпоративный репозиторий в качестве зеркала в ~/.lein/profiles.clj:
{:user {:mirrors {"our-repo" {:name "our-repo"
:url "http://our-repo/all/"}}}}
К сожалению, этот параметр не влияет. Leiningen загружает артефакты из Maven Central:
PS> lein repl
Retrieving org/clojure/clojure/1.5.1/clojure-1.5.1.pom from central
...
Обновление
xsc предлагает перезаписать репозиторий Maven Central с помощью определения зеркала, которое указывает на корпоративный репозиторий. Оно работает. Теперь вместо перехода на внешний репозиторий Maven Leiningen извлекает артефакты из корпоративного репозитория.
S/He также предлагает указать дополнительное определение репозитория для установки резервного механизма.
К сожалению, это не так хорошо, потому что Leiningen жалуется на эту настройку:
:repositories detected in user-level profiles! [:user]
See https://github.com/technomancy/leiningen/wiki/Repeatability
Это предупреждение очень раздражает. По этой причине я воздержался от этой установки. Есть ли другой способ установить резервный механизм?
Ответы
Ответ 1
Насколько я могу видеть в примере Leiningen project.clj, вы должны использовать имя репозитория для зеркального отображения в качестве ключа в :mirrors
. Итак, попробуйте следующее:
{:mirrors {"central" { ... }}}
Это, скорее всего, заменит репозиторий полностью, поэтому вы можете снова добавить оригинал:
{:mirrors {"central" {:url "..." }}
:repositories {"maven" {:url "http://repo1.maven.org/maven2/"}}}
Ответ 2
Вот что работает для меня:
{:user {:mirrors {#".+" {:url "http://nexus.example.com:8081/nexus/content/groups/public"}}
:repositories [["snapshots" {:id "NudaySnapshots"
:url "http://nexus.example.com:8081/nexus/content/repositories/snapshots"}]
["releases" {:id "NudayReleases"
:url "http://nexus.example.com:8081/nexus/content/repositories/releases"
:sign-releases false}]]}
:auth {:repository-auth {#"nexus.example.com" {:username "deployment"
:password "foo bar baz"}}}}
Это обрабатывает как разрешение зависимостей через мое зеркало Nexus, так и публикацию артефактов с помощью lein deploy
.
Я получаю раздражающее предупреждение "Повторяемость", но я работаю над тем, чтобы избавиться от этого.