• 注册
    • 登录
    • 版块
    • 热门
    • Metabase官网
    • 社区汉化版
    • 达之云

    Metabase二次开发教程-02-project.clj解析

    Metabase二次开发教程
    1
    1
    1071
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • D
      dazdata 最后由 dazdata 编辑

      一、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
        可以理解为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
      1 条回复 最后回复 回复 引用 0
      • First post
        Last post

      Powered by MetabaseCN | 提供专业Metabase培训 | QQ群:799286435 微信:MetabaseCN

      鄂ICP备20010758号