Простейшая вещь, которую вы могли бы сделать, - загрузить все эти файлы по одному с помощью load-file
. https://clojuredocs.org/clojure.core/load-file
иначе вы могли бы прекомпилировать пространства имен ваших плагин и загружать их, используя некоторые из нативных методов в Java (который я не знаю много о, но я предполагаю, что есть некоторые хорошие библиотеки для этого)
обновления : для некоторого каталога с именем «/ мой/путь» это может выглядеть следующим образом:
(run! #(load-file (.getAbsolutePath %))
(rest (file-seq (java.io.File. "/my/path"))))
уведомление, что file
далее пересекает каталог рекурсивно, и включает в себя все файлы (не только *.clj
) , Возможно, вам придется отфильтровать их:
(run! #(load-file (.getAbsolutePath %))
(filter
#(clojure.string/ends-with? (.getName %) ".clj")
(rest (file-seq (java.io.File. "/my/path")))))
Как я могу поместить модули в список при использовании 'load-file'? –
обновил мой ответ – leetwinski