Проект установки Clojure и поместите его на Classpath

StackOverflow https://stackoverflow.com/questions/4857949

  •  27-10-2019
  •  | 
  •  

Вопрос

Я только что установил критерий, и я хочу иметь возможность использовать его из реплики и из других проектов. Как продлить Java ClassPath, чтобы я мог использовать установленную библиотеку из любого места?

Я буду признателен за ответы, которые могут легко работать над всеми проектами, над которыми я работаю в будущем. Я использую Лейнинген, и я предполагаю, что это сделает это, когда вы бежите lein install, но либо я делаю что -то не так, либо этого недостаточно.

Это было полезно?

Решение

Вы должны выучить базовую Maven (Lein использует Maven под капотом) и механику Java Classpath. Для очень краткого обзора:

Maven хранит зависимости в скрытом каталоге, .m2, в вашей домашней папке. Просмотрите папку, и это будет иметь смысл. Когда вы бежите lein install Он положит банку в эту папку. Попробуйте найти тот, который вы установили. Тем не менее, большинство зависимостей, которые вы используете, будут на таком сервере, как Clojars, поэтому вам не нужно вручную устанавливать его так, как вы. Например, критерий здесь.

В вашем проекте вам необходимо добавить критерий в качестве зависимости в Project.Clj. Это будет выглядеть примерно так:

(defproject your-project "0.1.5" :description "blah" 
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [criterium "0.0.1-SNAPSHOT"]
                 ]   
  :dev-dependencies
    [[swank-clojure "1.2.1"]])

Теперь CD в корневой папке вашего проекта и запустите lein deps. Анкет Это загрузит зависимости в project.clj и автоматически поместит их в .m2 и в папку LIB вашего проекта. Чтобы запустить реплику с запуска настройки ClassPath lein repl

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

Другие советы

Я буду признателен за ответы, которые могут легко работать над всеми проектами, над которыми я работаю в будущем.

К сожалению, это невозможно на JVM; Вы не можете изменить Classpath во время выполнения, поэтому он должен быть рассчитан отдельно для каждого проекта. Там нет общесистемного класса, хотя такие инструменты, как Лейнинген и CLJR, могут предоставить что-то подобное в некоторых контекстах:

$ lein install swank-clojure 1.3.0-SNAPSHOT

Это установит Swank-Clojure в ~/.Lein/Plugins, что сделает его доступным для всех проектов Leiningen в качестве зависимости от развития и сделает его доступным, когда вы сделаете «Lein Repl» вне контекста проекта, но вещи, которые будут Фактические зависимости проектов должны будут перейти в файл проекта Project.Clj. В противном случае было бы легко создавать проекты, которые работают на вашей машине, но не повторяются.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top