Могу ли я получить основной метод из другого проекта 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 определение.

Есть ли способ изменить основной метод на пространство имен, не определенное в проекте, не нарушая пространства имен в проекте?

0 ответов

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