首页 > 解决方案 > 如何在 lein 项目中编译不在“src”下的 clojure 模块

问题描述

我使用 lein new app hello 构建了我的项目,所以我有这个结构

.
└── src
    └── hello
        └── core.clj
└── project.clj
└── test
└── ..

我想在我的项目中添加另一个帮助模块,以便我可以在测试和 src 模块中使用代码,因为我希望它与 src 目录分离。

所以我添加了一个助手模块

.
└── src
    └── hello
        └── core.clj
└── project.clj
└── test
└── helpers
    └──hello
         └── helpers.clj

如何更改我的 project.clj 文件以进行lein run编译。lein run当我尝试要求助手命名空间时,不会编译并引发以下错误。

线程“main”中的异常 java.lang.ClassNotFoundException: hello.helpers, 正在编译:(hello/core.clj:7:3)

我的 project.clj 文件看起来像默认文件:

(defproject hello "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.8.0"]]
  :main ^:skip-aot hello.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})

但是在 IDE(IntelliJ) 中,它在 REPL 中运行良好,不会抛出未找到类的异常。

标签: clojureleiningen

解决方案


添加

:source-paths ["src" "helpers"]

到你的project.clj文件。


推荐阅读