Ho un progetto che funziona correttamente utilizzando lein run
. Ora voglio compilarlo in un vaso standalone usando lein uberjar
. Tuttavia, ci sono un paio di file sorgente nella mia directory src/projectname/
chiamata ad es. playground.clj
e stats.clj
che uso per sperimentare con emacs & il repl, ma che non voglio compilare per il progetto finale.esclude determinati spazi dei nomi clj dalla compilazione in leiningen
Con qualcosa come make
, vorrei specificare tutti i file che dovrebbero essere compilati. Con clojure/leiningen, a quanto pare, tutti i file sono compilati di default - come posso escludere i file? Non ho trovato nulla nei documenti leiningen.
Attualmente sto utilizzando :aot :all
. È questo il posto dove cambiare qualcosa? Ancora una volta, non sono riuscito a trovare documentazione dettagliata su questo.
UPDATE:
I suggerimenti finora non hanno funzionato. Ciò che ha funzionato, tuttavia, è include tutti gli spazi dei nomi desiderati invece di escludere quelli che non dovrebbero essere compilati. Ad esempio:
(defproject myproject "version"
;; ...
:profiles {:uberjar {:aot [myproject.data
myproject.db
myproject.util]}})
Non ha funzionato per me. Questo ha qualcosa a che fare con questo? -> Dallo stesso file sorgente: "^: skip-aot non disabiliterà la compilazione AOT di: main quando: aot is: all o contiene la classe principale." Cioè Dovrei quindi sostituire: tutto con un vettore di tutti i file da includere? – pholz
Questo è corretto. È possibile spostare il codice dal ns principale a un altro e aggiungere '^: skip-aot' allo spazio dei nomi – runexec
Bene, il mio ns principale è chiamato' myproject.core'. Ho aggiunto '^: skip-aot' alla direttiva' ns' in 'myproject.stats', ma quando eseguo' lein uberjar' vuol comunque compilare 'stats'. Ho potuto risolvere il problema solo rinominando 'stats.clj' in' stats.bak'. – pholz