Elixir的umbrella project

为什么要有umbrella project?

Mix提供了相当完善的应用管理(elixir中所谓应用有点像是其它语言中的)。由于elixir中
一个应用的粒度比较小,如果任由每个应用分开管理,则随着项目复杂度的逐渐增大,应用之间的依赖
关系也将失去控制。为了能妥善地管理应用之间的依赖,Mix专门推出一个专门用来管理应用的project
类型,名字就叫作umbrella。
实际中一个应用的规模能有多大?由于没有这一方面的经验,所以只能大概猜测。从目前的代码实例来看
elixir并不鼓励大的应用,每一个应用的尺寸都很小。

如何创建umbrella project?

umbrella projectr的创建还是相当简单的,只需要在命令行输入如下命令:

mix new project_name --umbrella

需要把上面命令行中的project_name替换成相应的工程名称

umbrella_project/mix.exs文件是和正常工程的mix.exs文件有点不同的。不同之处在于没有app
option,取而代之的是apps_path option。apps_path option其实是指向了该umbrella
project所管理的子应用的路径。

在umbrella project中创建新的project

umbrella工程创建完成之后,就可以该工程之下创建实际的工作工程了。比如我想创建一个空的kv工程只需
要在命令行输入如下命令:

cd umbrella_project\apps
mix new kv --module KV --sup

可以看出和正常的创建过程是一样的,不同点有以下两点:

  • 需要首先进入到apps目录下面,这是umbrella工程默认的保存所有应用的地方
  • MIX可以分辨出当前的kv工程是在umbrella project之下,会在apps/kv/mix.exs文件的project
    函数中加入以下的options:
build_path: "../../_build",
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock",
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,315评论 25 708
  • 第三阶段:身材蜕变 (5周) D70训练任务发布 热身/整理活动 抗阻力训练 有氧训练(心率控制)(40min) ...
    梁晓玲的超级舰队阅读 428评论 0 0
  • 作者不明 你永远都有答案,之所以在寻找,是因为此时刻你的内在并不是那么和平。答案并不会换回你的和平,而是和平让你真...
    胡子长阅读 279评论 0 1
  • 手术后,最初的不适是头晕恶心。平躺着,完全没事。只要起身,就晕。儿子开车接我回家,短短的几百米,我差点吐出来。 一...
    左岸梅花阅读 571评论 2 1