Chciałbym mieć dwie główne klasy (lub więcej) z leiningen, a następnie być w stanie wybrać, który z nich w wierszu poleceń java. Na przykład mam:Leiningen z wieloma głównymi klasami
(ns abc (:gen-class))
(defn -main [] (println "abc"))
(ns def (:gen-class))
(defn -main [] (println "def"))
Mając na project.clj mający:
(defproject my-jar "0.0.1"
:description "test"
:dependencies [
]
:main abc)
Potem budować z lein uberjar
i uruchom:
java -cp my-jar-0.0.1-standalone.jar abc
java -cp my-jar-0.0.1-standalone.jar def
Rozumiem, że kiedy podano :main abc
w project.clj było to wywołanie jako główna klasa w manifeście, ale nie mogłem go uruchomić bez umieszczenia czegoś. Ale tak czy inaczej, gdy próbuję uruchomić „def” głównym, mam klasę, nie znaleziono:
Exception in thread "main" java.lang.NoClassDefFoundError: def
dlaczego nie używać clojure cli https://github.com/clojure/tools.cli i przekazać argument wiersza cmd, aby wywołać każdą z różnych opcji? – locojay
Ostatecznie była to tymczasowa sytuacja polegająca na wielokrotnym zasilaniu sieci (szybkie uruchomienie/testowanie). Ale nie wiedziałem o tools.cli, więc dziękuję za link. Jestem pewien, że wykorzystam to w przyszłości. – Kevin