Metabase二次开发教程-02-project.clj解析
-
一、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]]-
ring
网站服务框架,可以理解为简化版的SpringBoot github地址
【plugin】lein-ring
基于lein和ring的开发的热启动框架,开发过程中可以自动检测代码的改动并重启服务,调试非常方便;github地址
当接口被调用时lein-ring才会检查是否有代码被修改并重启服务,其它时间不会自动重启;
需要在插件项中配置handler位置,程序会自动加载handler所在命名空间,注意若命名空间中显式启动了server会导致lein-ring热启动失败
启动命令:lein ring server-headless 8080 -
compojure
路由分发框架,解析http请求并进行分发 github地址 -
toucan
可以理解为clojure版的Mybatis,基于HoneySQL和clojure.java.jdbc开发 github地址
Honey SQL
sql语句组装框架,只负责sql组装,一般组装后交给jdbc执行 github地址
clojure.java.jdbc
clojure版的jdbc连接驱动 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】
原文链接:https://blog.csdn.net/weixin_43821438/article/details/111033795