2016-11-28 51 views
1

我有以下.lein-classpathleiningen自定义任务不是一个任务

tasks 

然后在任务,我有

tasks 
    > leiningen 
       >foo-bar.clj 

我那么有foo.clj

(ns leiningen.foo-bar) 

(defn foo-bar [project & args] 
    (println "foo")) 

以下内容当我运行lein foo-bar时,我收到:

'foo-bar' is not a task. See 'lein help'. 

Did you mean this? 
     foo-bar 

运行lein help产生(一般默认任务之一):

foo  Task: 'foo-bar' not found 

我在leiningen 2.7.1与Java 1.8.0_77

.lein-classpathtasksproject.clj都在项目根

更多的诊断结果:

which lein生产:/usr/local/bin/lein ~/.lein不含.lein-classpath,也没有任何任务定义 /etc/leinrc不存在

我怎么会去定义这个任务吗?为什么它“排序”看到任务(你的意思是这个?)

回答

3

回想一下,对于所有Clojure文件,不只是leiningen任务,名称空间foo-bar必须位于名为foo_bar.clj而不是foo-bar.clj的文件中。

+0

现在我觉得挺傻 –

+0

任何任务定义笑,唐别担心,我也没有注意到 –

1

这个错误意味着leiningen找不到任务文件。

请记住,.lein-classpath必须位于您的项目根目录中,就在您的project.clj所在的位置。此外,该路径相对于您的项目根目录,因此如果您的任务位于<root>/src/tasks中,则必须将src/tasks放入您的.lein类路径中。

+0

该路径位于/tasks/leiningen,并且.lein-classpath位于root.project.clj位置 –

+0

可以使用相同名称定义其他任务。请检查以下内容:〜/ .lein,/ etc/leinrc,特别是lein('哪个lein')对于任何.lein-classpath或leinrc文件的位置。 –

+0

已更新的问题。 其中雷音=>在/ usr/local/bin目录/雷音 的/ etc/leinrc不存在 〜/ .lein不包含.lein-类路径,也 –