Как скомпилировать модули clojure, которые не входят в "src" в проекте lein - PullRequest
0 голосов
/ 15 ноября 2018

Я создал свой проект, используя lein new app hello, поэтому у меня есть эта структура

.
└── src
    └── hello
        └── core.clj
└── project.clj
└── test
└── ..

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

Итак, я добавил модуль помощников

.
└── src
    └── hello
        └── core.clj
└── project.clj
└── test
└── helpers
    └──hello
         └── helpers.clj

Как мне изменить файл project.clj, чтобы lein run компилировался lein run не компилируется и выдает следующую ошибку, когда я пытаюсь запросить пространство имен помощников.

Исключение в потоке "main" java.lang.ClassNotFoundException: hello.helpers, компиляция: (hello / core.clj: 7: 3)

Мой файл project.clj выглядит как файл по умолчанию:

(defproject hello "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.8.0"]]
  :main ^:skip-aot hello.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})

Однако в IDE (IntelliJ) он отлично работает в REPL, без исключения исключая класс не найден.

1 Ответ

0 голосов
/ 15 ноября 2018

Добавьте

:source-paths ["src" "helpers"]

в файл project.clj.

...