Mi piacerebbe avere due classi principali (o più) con leiningen, e quindi essere in grado di scegliere quale nella riga di comando java. Per esempio io ho:leiningen con più classi principali
(ns abc (:gen-class))
(defn -main [] (println "abc"))
(ns def (:gen-class))
(defn -main [] (println "def"))
Con una project.clj avere:
(defproject my-jar "0.0.1"
:description "test"
:dependencies [
]
:main abc)
Poi ho costruire con lein uberjar
, ed eseguire:
java -cp my-jar-0.0.1-standalone.jar abc
java -cp my-jar-0.0.1-standalone.jar def
Ho capito che quando ho specificato :main abc
nel project.clj lo chiamava come main-class nel manifest, ma non riuscivo a farlo funzionare senza mettere qualcosa. Ma in entrambi i casi, quando si tenta di eseguire il 'def' principale, ottengo una classe non trovato:
Exception in thread "main" java.lang.NoClassDefFoundError: def
perché non utilizzare clojure cli https://github.com/clojure/tools.cli e passare un argomento di riga cmd per chiamare ciascuna delle diverse opzioni? – locojay
In definitiva, si trattava di una situazione temporanea per avere più alimentazione (rapido sviluppo/test). Ma non ero a conoscenza di tools.cli così grazie per il link. Sono sicuro che lo userò in futuro. – Kevin