Как использовать leiningen для разработки с использованием местных банок?

Я понимаю, что этот вопрос в значительной степени точный вопрос найден здесь. Однако, поскольку этому вопросу 1,5 года (или около того), я хотел бы вернуться к нему. Как добавить локальные зависимости с помощью leiningen? Наверняка эта способность уже существует?

3 ответов


создайте частный репозиторий Maven, а затем добавьте следующий код project.clj

:repositories {"local" ~(str (.toURI (java.io.File. "your_local_repository")))}

если банки основаны на ваших собственных проектах, вы можете использовать lein install чтобы поместить их в свой местный .m2 или используйте функцию checkout-dependencies.

вы также можете использовать функцию extra-classpaths и т. д.


я обнаружил, что самое простое решение (хотя и несколько суховато) нужно сделать следующее:

для существующего проекта, который вы используете в качестве зависимостей:

  1. в вашем локальном проекте, который имеет зависимость, которую вы хотите изменить, убедитесь, что вы запустите lein deps
  2. клонируйте РЕПО этой зависимости, чтобы вы могли изменять ее локально (obv. убедитесь, что используется тот же тег, что и версия, указанная в проекте.clj file)
  3. Run lein uberjar в этом dependency dir (где соответствующий проект.файл clj жизни)
  4. скопируйте сгенерированную автономную банку в target/в точный путь / файл ваших локальных файлов maven... (что-то вроде: ~/.м2/репозиторий/проект/.../папка.jar); убедитесь, что вы резервное копирование исходного файла jar, так что вы можете восстановить его позже, если это желательно

для разработки собственного проекта:

  1. в рамках проекта или плагина, который вы разрабатываете, просто запустите lein install
  2. узнайте, где находится ваше локальное репозиторий maven (см. выше пример пути)
  3. введите информацию о зависимостях в свой тестовый проект, как и для любого другого проекта leiningen

опять же, это быстрый взлом и, возможно, не так, как вы собираетесь заниматься серьезным местным развитием, но я нашел его достаточно легким для того, что я хотел. Проверьте lein help tutorial для более подробной информации