[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的基础 ...
随机推荐
- springboot中对yaml文件的解析
一.YAML是“YAML不是一种标记语言”的外语缩写 (见前方参考资料原文内容):但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名.它是一种直观的能够被电脑识别的数据序列化 ...
- 20190313_C#反转绘制字符串
效果图: 代码: private void button7_Click(object sender, EventArgs e) { Point p = new Point(10,10); Graphi ...
- multiboot 的golden image 和update image的 mcs文件的生成及调试
multiboot的功能对于不同的FPGA应该是相同的,但是具体的配置可能不一样.基本流程如下: 上图来源是xapp1246, 明显分为5个步骤,在FPGA启动时是有flash的0地址开始,但是因为 ...
- jquery内容补充
jquery除了咱们上面讲解的常用知识点之外,还有jquery 插件.jqueryUI知识点 jqueryUI 官网: https://jqueryui.com/ jqueryUI 中文网: http ...
- sql server 全文检索 使用
目前项目中的日志查询 功能 由于长年累月的写入,目前已经达到千万级,对日志进行like 查询,速度可想而知. 此处只讨论 在数据库的优化. 当时 想到两个方案,一个是分区,一个 是全文检索. 分区的话 ...
- 菜单与内容下拉jQuery
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- UNITY polygon collider不随物体旋转
U3D中的一般包围框如 boxcollider, meshcollider, capsule collider等都会随物体旋转而旋转.然而polygon collider却不会. 补充:原来所有2D包 ...
- Windows10系统下安装python2和python3双版本
Windows10系统下安装Python3的步骤已经演示过(详见:https://www.cnblogs.com/schut/p/8399195.html),此处不再赘述Python的下载,主要介绍在 ...
- Redis Set命令
[Redis Set命令] SET key value [EX seconds] [PX milliseconds] [NX|XX] 将字符串值 value 关联到 key . 如果 key 已经持有 ...
- protobuf's extension
[protobuf's extension] extension允许第三方扩展协议,开发方需要像下面这样定义: 扩展方需要像下面这样扩展: 使用的时候必须用SetExtension方法: 参考:htt ...