[Elixir003] Mix Archives
在[Elixir001]中使用 mix escript.build 生成一个lifelog 的escript启动脚本。
今天我们尝试一下另一种方式:生成Archives。
我们先添加一个Task
1. 查看下我们现在有那一些task.
这个命令非常有用,:)
> mix help
mix # Runs the default task (current: "mix run")
mix app.start # Starts all registered apps
mix archive # Lists all archives
mix archive.build # Archives this project into a .ez file
mix archive.install # Installs an archive locally
mix archive.uninstall # Uninstalls archives
mix clean # Deletes generated application files
.....
2. 创建项目自定义的Task.
> mkdir -p lib/mix/tasks #一般都是放在lib/mix/tasks下的!
>emacs lib/mix/tasks/lifelog.start.ex # 一般都是以.分隔的!
defmodule Mix.Tasks.Lifelog.Start do
use Mix.Task
@shortdoc "Start logging" @moduledoc """
Manager your life.
""" def run(args) do
{ _opts, args, _ } = OptionParser.parse(args) # 把命令行的args parse成可以使用的args
Mix.Tasks.App.Start.run(args) #要先把application先启动
LifeLog.CLI.main(args)
end
end
现在我们可以在当前目录下运行
> mix lifelog.start #在项目当前目录下
成功打开录入界面!!!!!!! ,但是如果在别的目录下呢?
3. 构建archive
现在我们如果不在项目的root目录下运行
> mix lifelog.start
** (Mix) The task "lifelog.start" could not be found
根本找不到我们的这个task,因为我们还没有安装对应的archive,这个命令可以在上面的步骤1看到说明,我们只需要按说明来生成一个archive就行
> mix archive #查看当前install了什么archive
* hex-0.11.1.ez
Archives installed at: /Users/zhongwen/.mix/archives > mix archive build #它会生成一个App-Version.ez文件
Compiled lib/mix/lifelog.start.ex
Generated archive "lifelog-0.0.1.ez" with MIX_ENV=dev > mix archive.install lifelog-0.0.1.ez
Are you sure you want to install archive "lifelog-0.0.1.ez"? [Yn] y
* creating /Users/zhongwen/.mix/archives/lifelog-0.0.1.ez
> mix archive
* hex-0.11.1.ez
* lifelog-0.0.1.ez
Archives installed at: /Users/zhongwen/.mix/archives
mix archive build如果不指定文件名并且在当前目录有mix.exs文件的话,会根据它里面的app 和 version生成 App-Version.ez,
这下我们就可以到处运行
> mix lifelog.start
4.补充说明
以上已能完整的创建并安装一个archive啦,但是上面有一个比较有意思的函数,我们这个例子中并实际用到,但却是一个非常有用的函数!
Interactive Elixir (1.2.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> OptionParser.parse(["--debug"])
{[debug: true], [], []}
iex(2)> OptionParser.parse(["--source", "lib"])
{[source: "lib"], [], []}
iex(3)> OptionParser.parse(["--source", "lib", "test/test.exs", "--verbose"])
{[source: "lib", verbose: true], ["test/test.exs"], []}
它可以把命令行的参数args转化为一个keywords list.
更多详细的例子可以通过(doc里面的例子更加全面)
iex(4)> h OptionParser.parse
5.Resources
5.2 Mix.Tasks.Archive.Build Documentation
5.3 The Phoenix installer archive application 这个看上去也很棒!
5.4 以上提到的所有代码修改: 增加Task 并生成archive 启动
Loading up the process dictionary
[Elixir003] Mix Archives的更多相关文章
- Running Elixir in Docker Containers
转自:https://www.poeticoding.com/running-elixir-in-docker-containers/ One of the wonderful things abou ...
- VR ( Virtual Reality )、AR(Augmented Reality)、MR(Mix Reality)和CR(Cinematic Reality)是什么鬼?
整个社会对虚拟现实的研究和开发源于上个世纪六十年代,计算机图形学.人机接口技术.图像处理与模式识别.多传感技术.语音处理与音响技术.高性能计算机系统.人工智能等领域在之后半个世纪取得了长足的发展为虚拟 ...
- Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
MySQL字符串比较bug: select * from table_a a left join table_b b on a.field_a = b.field_b error: Illegal ...
- dpkg: 处理归档 /var/cache/apt/archives/软件名 (--unpack)时出错:由于已经达到 MaxReports 限制,没有写入 apport 报告。
一.环境介绍: OS:ubuntu16.04 64bit 二.错误如下: 正准备解包 .../libqt4-script_4%3a4.8.7+dfsg-5ubuntu2_i386.deb ...正在 ...
- 彻底解决phpcms v9升级后,文章发布出现: Mysql 1267错误:MySQL Error : Illegal mix of collations 解决办法
彻底解决phpcms v9升级后,文章发布出现: MySQL Query : SELECT * FROM `withli_a`.`v9_keyword` WHERE `keyword` = '吼吼' ...
- 从头开始学算法--NUM operation in MIX
从前往后,按照课本顺序刚刚看到MIX这部分.NUM是一个转换操作符,可以把字符编码转换为数字.它把registerA & registerX的值转换为数字并赋值给registerA.转换过程是 ...
- Mix and Build(简单DP)
Mix and Build Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3936 Accepted: 1203 Case Ti ...
- 个人博客实现Archives查询小记
这两天正在做博客,刚刚遇到一个问题,就是需要在主页实现文档分类功能,即通过日期将文章进行按日期进行分类. 比如这样的: 我个人的想法是,查询所有文章的日期,然后将日期进行格式化,只留下年份和月份,然后 ...
- PowerPoint Office Mix 插件
一个内嵌在PowerPoint里的一个教学工具,可以以PPT为核心录制视频. 点下面链接了解并安装 https://mix.office.com/ 首先这货是免费,当然是基于PowerPoint的基础 ...
随机推荐
- httpclient跳过https请求的验证
一.因为在使用https发送请求的时候会涉及,验证方式.但是这种方式在使用的时候很不方便.特别是在请求外部接口的时候,所以这我写了一个跳过验证的方式.(供参考) 二.加入包,这里用的是commons- ...
- PHP CRC16 校验码的算法怎么使用
PHP CRC16 校验码的算法如何使用最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 0103 ...
- 十一.jQuery源码解析之.pushStack()
pushStack()顾明思意,就是像桟中添加东西呗,现在看看他是如何添加东西的. 创建一个空的jQuery对象,然后把Dom元素集合放入这个jQuery对象中, 并保留对当前jQuery对象的引用. ...
- WebAPI认证与授权
Web APi之认证(Authentication)及授权(Authorization)[一](十二) http://www.cnblogs.com/CreateMyself/p/4856133.ht ...
- springcloud(七) feign + Hystrix 整合 、
之前几章演示的熔断,降级 都是 RestTemplate + Ribbon 和 RestTemplate + Hystrix ,但是在实际开发并不是这样,实际开发中都是 Feign 远程接口调用. ...
- TCP/IP协议 socket
TCP/IP四层协议 TCP/IP概念 tcp/ip协议是主机接入互联网以及接入互联网的两台主机通信的标准. 数据帧概念 数据帧 |-- 包头 | |--源地址 | |--目标地址 | |--数据类型 ...
- cluster DNS
[root@mhc1 dns]# pwd/root/test/k8s/kubernetes/cluster/addons/dns [root@mhc1 dns]# export DNS_SERVER_ ...
- docker-compose搭建单机多节点es + kibana
docker-compose.yml配置如下: version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsear ...
- 【bzoj1911】[Apio2010]特别行动队
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4048 Solved: 1913[Submit][Statu ...
- UITextFeild银行卡/身份证/电话号任意分割.
日常开发中可能有个需求, 1.银行卡每4位添加一个空格 2.电话号:3 4 4 比如(138 8888 8888)3.身份证(411111 20171213 1314) 看了网上许多方法都是输入的时 ...