【问题标题】:lein-autodoc with Leiningen 2lein-autodoc 与 Leiningen 2
【发布时间】:2012-12-20 18:13:22
【问题描述】:

我正在尝试使用lein-autodoc,因为我相信它是 Clojure 的首选文档生成器。根据 lein-autodoc github 页面上的说明,我已将 :dev-dependencies [[lein-autodoc "0.9.0"]] 添加到我的项目定义中。

运行 lein deps 运行没有问题,但是 lein autodoc 失败,声称 autodoc 不是任务。

我怀疑问题在于 lein-autodoc 设置为与 leiningen 1 一起使用。但是,我使用的是 leiningen 2。我应该使用 autodoc 调用 lein 的替代方法吗?或者 lein-autodoc 包没有设置为与 lein 2 一起使用?如果没有,是否还有其他首选的兼容 lein2 的文档生成选项?

编辑:

根据下面Cubic的提示,我创建了~/.lein/profiles.clj,如下:

{:user {:plugins [[lein-autodoc "0.9.0"]]}}

现在,运行 lein autodoc 会产生以下结果:

$ lein autodoc
Exception in thread "main" java.lang.IllegalAccessError: sh does not exist
    at clojure.core$refer.doInvoke(core.clj:3778)
    at clojure.lang.RestFn.applyTo(RestFn.java:139)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_lib.doInvoke(core.clj:5279)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:603)
    at clojure.core$load_libs.doInvoke(core.clj:5298)
    (...)

这表明 autodoc 可能与 Lein 2 不兼容?如果没有,是否有任何适用于 Lein 2 的文档系统?

【问题讨论】:

    标签: clojure leiningen autodoc


    【解决方案1】:

    autodoc 曾经是更常见的文档生成器,但现在它主要用于 Clojure 本身(并且针对任务进行了优化)。我强烈建议您改用codox。它非常好。您可以在我自己的一个项目here

    中看到它的实际效果

    (我知道这在另一个答案中已经说过,但是为了使我的答案完整,我还是需要添加它)

    另外,在 leiningen 2 中没有 :dev-dependencies 键。相反,有一个:dev 配置文件。查看 Leiningen 个人资料文档以获取更多信息。在这种情况下,您只需将:plugins 键添加到您的项目或使用您想要的插件(如 codox、autodoc 等)的全局用户配置文件中。

    【讨论】:

    • 优秀。我怀疑 autodoc 是否是最新最好的。感谢您提供带有好例子的固执己见的答案。
    • 我知道这是一个老问题,但我想插话说 Marginalia 制作精美的文档。它不像 codox 或 autodoc 那样正式,但我认为它创造了一种非常好的、有文化的风格。 github.com/gdeer81/marginalia
    • 这个问题仍然存在这个答案。 clojure.lang.Compiler$CompilerException: java.lang.IllegalAccessError: sh does not exist, compiling:(leiningen/autodoc.clj:1:1)为什么会被接受?
    • 好吧,对于初学者来说,因为它实际上并不是不正确的。您需要在 leiningen 2 中为此使用 :plugins。但是,是的,github.com/tomfaulhaber/lein-autodoc/blob/master/src/leiningen/… 是它被破坏的原因。如果你想使用它,我建议你提交一个拉取请求或者只是 fork 项目。就个人而言,我只会使用一种……你知道……有效的新工具。
    【解决方案2】:

    lein 2 中没有:dev-dependencies,你必须使用profiles

    我不确定 autodoc 是否真的适用于 lein 2。请记住,clojure 及其环境的发展速度非常快,而且有很多过时的信息。

    【讨论】:

    • 感谢您的提示。我继续创建了一个profiles.clj 文件,该文件显然已将autodoc 注册为一项任务——它只是不起作用。我已经相应地编辑了问题。
    猜你喜欢
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多