文章目录
一、projec.clj介绍
- Leiningen配置文件,类似于java项目中的pom文件
- 配置方法和字段说明参见leiningen官方说明 sample.project.clj 或 中文翻译
- 以下将解析metabase中相对重要的配置
二、Aliases
- 自定义task,用于在终端中通过命令行指令调用
- 可以理解为将多个命令组合在一起,简化为一个命令进行调用,示例参考 stack overflow
示例:“run-ee” [“with-profile” “+run,+ee” “run”]
- 在命令行中运行 lein run-ee, 等效于运行 lein with-profile +run,+ee run
- 括号中第一项 with-profile 表示将引入profile中配置的环境
- 括号中第二项为环境项,+ 代表引入, - 代表去除(若当前环境已经引入),多个环境项用逗号隔开
- 括号中剩余项为执行命令,可以有多项,用空格分隔
三、Dependencies
-
引入包,与maven包管理方式类似,如果有包冲突需要在引用时排除
示例: [colorize “0.1.1” :exclusions [org.clojure/clojure]]1. ring
- 网站服务框架,可以理解为简化版的SpringBoot github地址
【plugin】lein-ring
- 基于lein和ring的开发的热启动框架,开发过程中可以自动检测代码的改动并重启服务,调试非常方便;github地址
- 当接口被调用时lein-ring才会检查是否有代码被修改并重启服务,其它时间不会自动重启;
- 需要在插件项中配置handler位置,程序会自动加载handler所在命名空间,注意若命名空间中显式启动了server会导致lein-ring热启动失败
- 启动命令:lein ring server-headless 8080
2. compojure
- 路由分发框架,解析http请求并进行分发 github地址
3. toucan
- 网站服务框架,可以理解为简化版的SpringBoot github地址
四、Profiles
- 默认 :dev 和 :user 环境是激活的,执行 lein repl 时激活 :repl ,执行 lein uberjar 时激活 :uberjar
- :user 默认在
~/.lein/profiles.clj
中配置(不建议在project.clj中配置),:dev 默认在测试和开发环境生效 - profile中包括 [vector] 和 {map} 两种格式,[vector]用于引用其它已配置的环境,{map}用于配置具体环境
:ci {:jvm-opts ["-Xmx2500m"]}
- 直接配置ci环境,{map} 中的 :key 需与project.clj中规范的 :key 和 value 保持一致,详见 sample.project.clj
- 引用ci环境时(直接在命令行引用或通过 :aliases 配置),会将该参数合并到project.clj中进行加载;
:run [:include-all-drivers :exclude-tests {}]
- 引用已经配置好的 include-all-drivers 和 exclude-tests 环境,自身不再配置环境
:repl [:include-all-drivers {:jvm-opts ["-Duser.timezone=UTC"]}]
- 引用已经配置好的 include-all-drivers 环境,同时自身再定义一个jvm环境配置
- profiles相关介绍资料很难找,最详细文档是在终端中输入命令行指令:lein help profiles,会输出profiles解释
- metababase中定义的环境包括
- 【oss】空
- 【ee】企业版,改变了source-paths 和 test-paths
- 【dev】测试环境
- 【junit】
- 【ci】
- 【install】空
- 【install-for-building-drivers】
- 【exclude-tests】清空test任务路径
- 【run】
include-all-drivers
+exclude-tests
- 【run-with-repl】
run
+ repl设置 - 【ring】
run
+ lein-ring配置 - 【with-include-drivers-middleware】
- 【test-common】
- 【test】
with-include-drivers-middleware
+test-common
- 【include-all-drivers】
- 【repl】
include-all-drivers
+ jvm时区设置 - 【linters-common】
- 【bikeshed】
- 【eastwood】
- 【reflection-warnings】
- 【docstring-checker】
- 【check-namespace-decls】
- 【cloverage】
- 【uberjar】
- 【strip-and-compress】
- 【profile】
- 【h2-shell】
- 【generate-automagic-dashboards-pot】
- 【compare-h2-dbs】