查看Leiningen教程中文版的源代码
←
Leiningen教程中文版
跳转到:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 依赖 == === 概览 === Clojure是一门寄宿语言(译注:寄宿于JVM之上),并且Clojure的类库也像其他JVM语言那样作为JAR发布。 JAR(<code>jar</code>文件)基本上仅仅是是一些附加了JVM特有元信息的<code>.zip</code>文件。 它们通常包含有<code>.class</code>文件(JVM字节码),和<code>.clj</code>源码文件, 但是它们也可以包含其他一些东西,例如配置文件、JavaScript文件或者含有静态数据的文本文件。 已发布的JVM类库拥有''identifiers''标识符(artifact group, artifact id)和''versions''版本号。 === Artifact IDs, Groups和Versions === 你可以使用web接口[http://clojars.org/search?q=clj-http 搜索Clojars],搜索clj-http的结果页显示为: [clj-http "0.5.5"] 有两种不同的途径来设置依赖<code>clj-http</code>类库的最新版本,一种是类似于上面所展示的Leiningen格式,另一种是Maven格式。我们现在略过Maven的方式,但是你需要为使用)来自[http://search.maven.org Maven central]的Java类库学习一下(maven方式)。你可以直接拷贝Leiningen版本到<code>project.clj</code>里的<code>:dependencies</code> vector。 在vector里,"clj-http"被称为"artifact id"(译者注:有maven经验的童鞋会很熟悉)。"0.5.5"就是版本号。一些类库还会有"group id",显示成这样: [com.cedarsoft.utils.legacy/hibernate "1.3.4"] group-id就是斜杠之前的部分。特别是对于Java类库来说,它通常是倒序的域名。而Clojure类库通常使用相同的group-id和artifact-id(例如clj-http),这种情况下你可以忽略group-id。 如果某个类库从属于一个很大的分组(例如<code>ring-jetty-adapter</code>是<code>ring</code>项目的一部分),那么通常所有子项目的group-id保持一样。 === Snapshot版本 === 有时候版本号会以 "-SNAPSHOT"结尾。这意味着这不是一个正式的release版本,而是一个开发阶段构建(版本)。不鼓励依赖snapshot版本,但是有时候这也是必须的,例如你需要bug fix等,但还没有将它们发布。尽管如此,snapshot版本不被保证停留(stick around),所以很重要的一点是非开发阶段的release绝不依赖你无法控制的snapshot版本。添加一个snapshot依赖到你的项目里,会导致Leiningen每天主动查找该依赖的最新版本(而正常的release版本会缓存在本地仓库),所以如果你使用了很多snapshot版本,可能会拖慢Leiningen一些。 请注意,有一些类库会让它们的group-id和artifact-id对应到它们jar里提供的命名空间,但是这一点仅是惯例。并不保证总是能匹配起来,因此,在你写下<code>:require</code>和<code>:import</code>语句之前请翻阅下类库的文档。 === 仓库 === 依赖库存储在''maven仓库''(正式的名称是maven artifact仓库,允许一点模棱两可的话也可以简称为仓库)。 如果你熟悉Perl的CPAN,Python的Cheeseshop(也就是PyPi),Ruby的rubygems.org或者Node.js的NPM,它们其实是一类东西。 Leiningen重用已有的JVM仓库设施。已经有一些很流行的开源仓库。Leiningen默认使用它们中的两个: [http://clojars.org clojars.org]和[http://search.maven.org/ Maven Central]。 [http://clojars.org Clojars]是Clojure社区的中心Maven仓库,而[http://search.maven.org/ Central]是更广泛的JVM社区的中心Maven仓库。 你可以添加第三方仓库,通过设置project.clj里的<code>:repositories</code>关键字。查看[https://github.com/technomancy/leiningen/blob/master/sample.project.clj sample.project.clj]示范。 === checkout依赖 === 有时候需要并行地开发两个项目,但是为了让变更生效,总是要运行<code>lein install</code>并重启你的REPL,这样做非常不方便。Leiningen提供了一种称为''checkout依赖''(简称''checkouts'')的解决办法。为了使用它,你需要在项目根目录下创建一个名为<code>checkouts</code>的目录,类似: . |-- project.clj |-- README.md |-- checkouts |-- src | `-- my_stuff | `-- core.clj `-- test `-- my_stuff `-- core_test.clj 然后,在checkouts目录里,创建你需要的项目的符号链接: . |-- project.clj |-- README.md |-- checkouts | `-- superlib2 [link to ~/code/oss/superlib2] | `-- superlib3 [link to ~/code/megacorp/superlib3] |-- src | `-- my_stuff | `-- core.clj `-- test `-- my_stuff `-- core_test.clj <code>checkouts</code>目录里的类库比从仓库拉取的类库优先级更高,但是这不是用来替代罗列在项目project.clj里的<code>:dependencies</code>,而只是为了方便使用的一种补充手段。 checkouts特性是非传递性的(译注:A依赖B,B依赖C,那么A将依赖C,这称为依赖传递):换句话说,Leiningen不会查找一个checkout依赖库的checkout依赖。
返回到
Leiningen教程中文版
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面