首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在REPL中的Lein项目中查找东西吗?

我可以在REPL中的Lein项目中查找东西吗?
EN

Stack Overflow用户
提问于 2015-12-15 02:03:32
回答 2查看 51关注 0票数 3

比如说我有一个香草的project.clj

代码语言:javascript
复制
(defproject myservice "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :mailing-list {:name "myservice@example.com" :post "myservice@climate.com"}
  :license {:name "Eclipse Public License"
            :url  "http://www.eclipse.org/legal/epl-v10.html"}

  :dependencies [[org.clojure/clojure "1.6.0"]
                 [ring/ring-core "1.4.0"]
                 [ring/ring-jetty-adapter "1.4.0"]
                 [compojure "1.4.0"]
                 [ring/ring-defaults "0.1.5"]
                 [org.clojure/tools.logging "0.3.1"]
                 [clj-http "2.0.0"]]

  :plugins [[lein-ring "0.9.7"]]

  :ring {:handler myservice.core/standalone-app
         :port 3000}
  :profiles {
             :uberjar {:ring {:handler myservice.core/app}}}
  )

lein repl中,我可以从project.clj中查找值吗?多么?我的盲黑客当然不起作用?

代码语言:javascript
复制
user=> (:mailing-list project)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: project in this context, compiling:(/private/var/folders/1g/fnytl2x93sx6hp2f1rsf4h1r5xtqv_/T/form-init6671981825845237047.clj:1:1)

下面的问题是,我是否可以在project.clj中进一步使用项目地图中的内容?比如,如果我想要删除邮件列表:将其命名并替换为a :deb :维护者?

代码语言:javascript
复制
:deb 
  {:toDir "target"
   :package "mysevice"
   :maintainer {:name "Meeples", :email "myservice@example.com"}
   ...
  }

我相信你可以看出,我是个新手,但是project.clj只是可执行的Clojure,不是吗?如果我知道项目地图的名称,我应该能够查询它,对吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-15 18:00:37

您可以像往常一样使用def数据,并使用~将其包括在内。

代码语言:javascript
复制
(def mailing-list {:name "myservice@example.com" :post "myservice@climate.com"})

(defproject myservice "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :mailing-list ~mailing-list
  :license {:name "Eclipse Public License"
            :url  "http://www.eclipse.org/legal/epl-v10.html"}

  :dependencies [[org.clojure/clojure "1.6.0"]
                 [ring/ring-core "1.4.0"]
                 [ring/ring-jetty-adapter "1.4.0"]
                 [compojure "1.4.0"]
                 [ring/ring-defaults "0.1.5"]
                 [org.clojure/tools.logging "0.3.1"]
                 [clj-http "2.0.0"]]

  :plugins [[lein-ring "0.9.7"]]

  :ring {:handler myservice.core/standalone-app
         :port 3000}
  :profiles {
             :uberjar {:ring {:handler myservice.core/app}}}
  :deb {
        :toDir "target"
        :package "mysevice"
        :maintainer {:name "Meeples", :email (:name ~mailing-list)}})
票数 1
EN

Stack Overflow用户

发布于 2015-12-15 08:32:06

这是莱宁根的相关行:https://github.com/technomancy/leiningen/blob/b29b2ea41b6d177a8a57493b979164eab0931e4d/leiningen-core/src/leiningen/core/project.clj#L405

如果名称空间是leiningen.core.project,则映射应该在它下面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34279884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档