Могу ли я получить основной метод из другого проекта Leiningen?
Я пишу рамки. Надеюсь, я бы хотел, чтобы при реализации проектов использовался основной метод для фреймворка.
В моем демо-проекте, в definition.clj
Я имею:
(ns definition
(:gen-class))
(def widget
{:this :that})
(defn -main [& args] (prn "MAIN"))
В моем project.clj
файл у меня есть :main ^:skip-aot definition
, Когда я lein run
Я получил ожидаемое
lein run
"MAIN"
Когда я lein repl
Я могу видеть widget
а также -main
функции:
definition=> definition/-main
#object[definition$_main 0x3ce2a73f "definition$_main@3ce2a73f"]
definition=> definition/widget
{:this :that}
Когда я звоню (all-ns)
Я могу видеть пространство имен как #object[clojure.lang.Namespace 0x64965348 "definition"]
,
Вот проблема: если я изменю метод main на метод, определенный в другом проекте (который является зависимым):
:main ^:skip-aot the-framework.core
Основной метод работает. Но пространства имен больше не видны:
the-framework.core=> definition/widget
CompilerException java.lang.RuntimeException: No such namespace: definition, compiling:(/private/var/folders/gc/_1drfv2n2m588qnq5xz35g080000gn/T/form-init8820469930602256143.clj:1:1325)
Единственное, что изменилось, было :main
стоимость в Лейнингене project.clj
определение.
Есть ли способ изменить основной метод на пространство имен, не определенное в проекте, не нарушая пространства имен в проекте?