2015-07-02 4 views
12

Gibt es eine Möglichkeit Rake-ähnliche Aufgaben innerhalb eines Projekts für Leiningen zu definieren.projektspezifische Aufgaben in Leiningen definieren

Ich möchte eine benutzerdefinierte Aufgabe in Leiningen project.clj definieren, die eine Funktion in meinem Projekt-Namespace aufruft

+1

Ihrer Frage nur ein Alias ​​ist, ist ziemlich unklar, für Leute, die Rake wissen nicht, (wie ich). Kannst du es ausarbeiten? Ich denke, Sie finden, dass Sie [boot] (https://github.com/boot-clj/boot) besser auf Ihre Anforderungen abstimmen können. – schaueho

Antwort

17

Sie können define project-specific aliases, zB:

:aliases {"launch" ["run" "-m" "myproject.main"] 
      ;; Values from the project map can be spliced into the arguments 
      ;; using :project/key keywords. 
      "launch-version" ["run" "-m" "myproject.main" :project/version] 
      "dumbrepl" ["trampoline" "run" "-m" "clojure.main/main"] 
      ;; :pass-through-help ensures `lein my-alias help` is not converted 
      ;; into `lein help my-alias`. 
      "go" ^:pass-through-help ["run" "-m"] 
      ;; For complex aliases, a docstring may be attached. The docstring 
      ;; will be printed instead of the expansion when running `lein help`. 
      "deploy!" ^{:doc "Recompile sources, then deploy if tests succeed."} 
      ;; Nested vectors are supported for the "do" task 
      ["do" "clean" ["test" ":integration"] ["deploy" "clojars"]]} 

Sie sollten diese Funktion kombinieren können, mit lein-exec plugin einen Aliasnamen zu definieren beliebigen clojure Code in Ihrem Projekt auszuführen:

:aliases {"dosmth" ["exec" "-ep" "(use 'myproject.main) (foo 42)"]} 

Jetzt können Sieverwenden 210 Aufgabe mit lein:

lein dosmth 

, der

lein exec -ep "(use 'myproject.main) (foo 42)"