2017-05-09 3 views
0

Lein n'utilise pas ma méthode principale. J'ai même introduit des erreurs de syntaxe, et il ne les attrape pas. Je suis vraiment perplexe. J'apprécierais grandement l'aide de la communauté.Lein n'utilise pas ma méthode principale

Je crois que la méthode principale est correctement spécifiée. Le premier exemple de code est server.clj, avec la méthode principale. Suivant est mon project.clj.

(ns naac.server 
    (:require [naac.handler :refer [handler]] 
      [config.core :refer [env]] 
      [migratus.core :as migratus] 
      [ring.adapter.jetty :refer [run-jetty]] 
      [naac.db :refer [load-db!]]) 
    (:gen-class)) 

(def db-config {:store :database 
       :db (get (System/getenv) "DATABASE_URL" 
        "jdbc:postgresql://localhost:5432/jeff") 
       :migration-dir "migrations"}) 

(defn -main [& args] 
    (println args) 
    (doseq [a args] 
    (cond 
     (= a "migrate") 
     (do 
      (println "Migrate database...") 
      (migratus/migrate db-config) 
      (println "...Migration done.")) 
     (= a "rollback") 
     (do 
      (println "Rollback database...") 
      (migratus/rollback db-config) 
      (println "...Rollback done.")) 
     (= a "load") 
     (do 
      (println "Load database...") 
      (load-db!) 
      (println "...Load done.")))) 

    (if (> (count args) 0) (System/exit 0)) 

    (let [port (Integer/parseInt (or (env :port) "3000"))] 
    (run-jetty handler {:port port :join? false}))) 

Mon project.clj:

(defproject naac "0.1.0-SNAPSHOT" 
    :dependencies [[org.clojure/clojure "1.8.0"] 
       [org.clojure/clojurescript "1.9.229"] 
       [reagent "0.6.0"] 
       [re-frame "0.9.2"] 
       [compojure "1.5.0"] 
       [yogthos/config "0.8"] 
       [migratus "0.9.2"] 
       [ring "1.4.0"] 
       [com.layerware/hugsql "0.4.7"] 
       [org.postgresql/postgresql "9.4.1207"]] 

    :plugins [[lein-cljsbuild "1.1.4"] 
      [migratus-lein "0.4.1"]] 

    :min-lein-version "2.5.3" 

    :source-paths ["src"] 

    :clean-targets ^{:protect false} ["resources/public/js/compiled" "target"] 

    :figwheel {:css-dirs ["resources/public/css"] 
      :ring-handler naac.handler/dev-handler} 

    :profiles 
    {:dev {:dependencies [[binaryage/devtools "0.8.2"]] 
     :plugins  [[lein-figwheel "0.5.9"]] 
     :resource-paths ["resources/config"]} 
    } 

    :migratus {:store :database 
      :db ~(get (System/getenv) "DATABASE_URL" 
        "jdbc:postgresql://localhost:5432/jeff") 
      :migration-dir "migrations"} 

    :cljsbuild 
    {:builds 
    [{:id   "dev" 
    :source-paths ["src/cljs"] 
    :figwheel  {:on-jsload "naac.core/mount-root"} 
    :compiler  {:main     naac.core 
        :output-to   "resources/public/js/compiled/app.js" 
        :output-dir   "resources/public/js/compiled/out" 
        :asset-path   "js/compiled/out" 
        :source-map-timestamp true 
        :preloads    [devtools.preload] 
        :external-config  {:devtools/config {:features-to-install :all}} 
        }} 

    {:id   "min" 
    :source-paths ["src/cljs"] 
    :jar true 
    :compiler  {:main   naac.core 
        :output-to  "resources/public/js/compiled/app.js" 
        :optimizations :advanced 
        :closure-defines {goog.DEBUG false} 
        :pretty-print false}} 


    ]} 

    :main naac.server 

    :aot [naac.server] 

    :uberjar-name "naac.jar" 

    :prep-tasks [["cljsbuild" "once" "min"] "compile"] 
) 

ma structure de répertoire peut être vu dans this image. Si vous avez besoin d'un niveau d'imbrication plus profond, vous pouvez le voir here.

Quand je lance lein je reçois cette sortie:

Compiling ClojureScript... 
2017-05-09 12:12:12.739:INFO::main: Logging initialized @2438ms 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
INFO: Starting migrations 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
WARNING: skipping: '.DS_Store' migrations must match pattern: ^(\d+)-([^\.]+)((?:\.[^\.]+)+)$ 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
INFO: Ending migrations 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
INFO: Starting migrations 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
WARNING: skipping: '.DS_Store' migrations must match pattern: ^(\d+)-([^\.]+)((?:\.[^\.]+)+)$ 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
INFO: Ending migrations 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
INFO: Starting migrations 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
WARNING: skipping: '.DS_Store' migrations must match pattern: ^(\d+)-([^\.]+)((?:\.[^\.]+)+)$ 
May 09, 2017 12:12:12 PM clojure.tools.logging$eval18$fn__22 invoke 
INFO: Ending migrations 
+1

Quels sont les chemins de vos fichiers et ce qui ne sortie 'lein run'? –

+0

Merci de votre aide! Voici la structure de l'arbre. Yikes, je ne peux pas le taper dans le commentaire. Laissez-moi voir si je peux mettre à jour mon message original. – Jeff

+0

Je suis lié à une image de la structure du répertoire. – Jeff

Répondre

1

Le problème est :source-paths dans votre project.clj. Lein s'attend à ce que votre dossier d'espace de noms soit directement dans le chemin source.

Vous pouvez déplacer votre dossier naac directement dans src (par exemple src/naac/server.clj) ou utiliser ["src/clj"] comme valeur pour :source-paths