Как скомпилировать модули clojure, которые не находятся под "src" в проекте lein

Я создал свой проект, используя 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 ответ

Решение

Добавлять

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

на ваш project.clj файл.

Другие вопросы по тегам