构建 Clojure 项目

本指南涵盖的内容 #

有关语言版本和其他构建环境特定信息,请访问我们的参考页面

本指南涵盖了特定于 Clojure 项目的构建环境和配置主题。请务必首先阅读我们的 教程通用构建配置 指南。

macOS 环境中不提供 Clojure 构建。

Clojure 项目的 CI 环境 #

Travis CI 环境为 JVM 语言提供了一套丰富的构建工具,包括 多个 JDK、Ant、Gradle、Maven 以及 Leiningen 1.7.x 和 2.4.x(默认)。

依赖项管理 #

如果您使用 Leiningen,它会自动安装 project.clj 文件中列出的任何依赖项。

备用安装步骤 #

如果您需要在测试运行之前安装其他依赖项,则应在 project.clj 中设置正确的 :hooks

如果由于某种原因您无法使用钩子,则可以在 .travis.yml 中覆盖安装步骤

install: lein protobuf install

请参阅 构建配置指南 以了解更多信息。

构建脚本 #

使用 Midje #

如果您的项目使用 Midje,请确保 lein-midje 位于 project.clj 开发依赖项列表中,并在 .travis.yml 中覆盖 script: 以运行 Midje 任务

script: lein midje

对于 Leiningen 1,请将 :dev-dependencies 添加到 project.clj

:dev-dependencies [[midje "1.4.0"]
                   [lein-midje "1.0.10"]])

Leiningen 2 使用配置文件替换了 :dev-dependencies

:profiles {:dev {:dependencies [[midje "1.6.3"]]
                 :plugins [[lein-midje "3.0.0"]]}}

请注意,对于仅支持 Clojure 1.3.0 及更高版本的项目,您可能需要在 project.clj 中为 Midje 排除瞬态 org.clojure/clojure

:dev-dependencies [[midje "1.4.0" :exclusions [org.clojure/clojure]]
                   [lein-midje "1.0.10"]])

有关实际示例,请参阅 Knockbox

在 Travis CI 上使用 Speclj #

如果您的项目使用 Speclj,请确保它在 project.clj 中的开发依赖项中列出,并在 .travis.yml 中包含此 script:

script: lein spec

对于 Leiningen 1,Speclj 应在 project.clj 中的 :dev-dependencies 下列出

:dev-dependencies [[speclj "3.3.1"]]

Leiningen 2 使用配置文件替换了 :dev-dependencies

:profiles {:dev {:dependencies [[speclj "3.3.1"]]}}

使用 Leiningen 1 #

Leiningen 1 与 2.4.x 并排提供。要使用它,请在 .travis.yml 中指定 lein

lein: lein1

如果您需要在 before_scriptinstall:script: 命令等中使用 lein 二进制文件,请使用 lein1

before_install:
  - lein1 bootstrap

构建配置参考 #

您可以在我们的 Travis CI 构建配置参考 中找到有关 Clojure 的构建配置格式的更多信息。

任务链需要使用 do 任务

script: lein1 do javac, test

针对多个 JDK 进行测试 #

与任何 JVM 语言一样,也可以 针对多个 JDK 进行测试

示例 #

针对多个 Clojure 版本进行测试 #

使用 Leiningen 1 #

Leiningen 有一个名为 lein-multi 的出色插件,可让您轻松地针对多个 Clojure 版本(例如,1.3、1.4 和最新开发版本的 alpha/beta/快照)进行测试。由于 leiningen 可以针对任何版本的 Clojure 运行测试(不一定与 Leiningen 本身使用的版本相同),因此无需使用 Clojure 的运行时切换器(如 RVM)。

要在 Travis CI 上使用 lein-multi,请将其添加到 project.clj 中的 :plugins(请注意,此功能仅在 Leiningen 1.7.0 及更高版本中可用),并将 script: 覆盖为运行 lein multi test 而不是默认的 lein test

language: clojure
script: lein1 multi test

有关实际示例,请参阅 Monger

使用 Leiningen 2 #

Leiningen 2 具有一个核心功能来替换 lein-multi配置文件。要针对多个配置文件(以及多个依赖项集或 Clojure 版本)运行测试,请使用 lein with-profile 命令,如下所示

lein: lein
script: lein with-profile dev:1.4 test

其中 dev:1.4 是要针对其运行 test 任务的配置文件的冒号分隔列表。使用 lein profiles 列出项目的配置文件,并使用 lein help with-profile 了解有关 with-profiles 任务的更多信息。

使用更新版本的 Leiningen #

如果您的 Clojure 项目需要更新版本的 Leiningen,您可以使用以下命令指定它:

language: clojure

lein: 2.6.1 # version 2 and up

如果未预安装指定版本的 Leiningen,则该作业将安装该版本,然后继续安装项目的依赖项。

示例 #

有关实际示例,请参阅 Neocons

示例 #