项目级Leiningen插件

cha*_*ker 11 clojure leiningen

在Leiningen版本1.xx中,我能够lein foo通过在该项目中添加以下内容来定义仅在单个项目中有效的任务project.clj:

(defproject tester "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.4.0"]])

;; Create a task, "foo"

(ns leiningen.foo
  (:require (leiningen [uberjar :as uberjar])))

(defn foo [project & args]
  (println "Do something here first, then make the uberjar.")
  (uberjar/uberjar project))
Run Code Online (Sandbox Code Playgroud)

您可以在此处获取有关此内容的更多信息:

http://nakkaya.com/2010/02/25/writing-leiningen-plugins-101/

在2.xx中,我不能再这样做了(也就是说,我觉得'foo' is not a task. 这似乎是一种方式,因为我必须为这个任务启动一个单独的项目. 是否仍然可以在project.clj中定义一个任务为leiningen 2.xx?

Dan*_*ero 5

简短的回答是"不",但定义项目级别任务仍然相当容易:添加:eval-in-leiningen true到您的defproject定义并将任务定义移动到src/leiningen/foo.clj.