背景介绍
学习一下Rake的使用.
简介
Rake 即 Ruby Make,一个用ruby开发的代码构建工具.
主要是用来解决两个问题:
- 脚本的管理. 我们经常会为一些大型项目编写许多脚本,甚至一个功能需要多个脚本,如果每次都一个一个执行会比较麻烦.使用Rake可以将这些脚本以任务的形式定义,管理起来会更加的轻松.
- 脚本或者任务之间的依赖关系.假设多个脚本之间有一定的依赖关系,那么用Ruby可以管理他们之间的执行顺序.
安装
brew install rake
运行
rake 任务名
即可.
rake 文件的编写
rake任务的定义是有一套自己的语法的.
编写任务
定义一个普通的任务:
desc "One line task description"
task :name_of_task do
#your code goes here
sh 'echo haha'
end
desc: 定义了任务的描述,在使用rake -T
或者rake --tasks
可以列出所有的任务包含其描述.
task: 定义了任务的名字以及任务的具体执行逻辑,还可以选择参数.
任务之间的依赖
desc "Example of a task with prerequisites"
task :task_two => ["task_one"] do
#Your code goes here
end
当执行任务task_two
时会检查task_one
是否已经执行.
设置默认任务
默认任务及执行rake
时调用的任务.
task :default => ['my_task']
命名空间
当你的任务非常多,不想他们之间互相影响的时候.可以定义命名空间
namespace 'name1' do
# tasks...
end
namespace 'name2' do
# tasks...
end
只是执行的时候要使用rake name1:task1
来执行.
一个Demo
假设:
我们的项目在本地开发,部署方式使用jar包部署.那么我们每次想要上线需要几步呢?
- 本地编译
- 运行测试一下
- 将本地jar包发送到服务器上并执行,
- 上线成功了.
这四个脚本,每次去手动执行一遍是在是有点麻烦.当然我们可以把他们写在一个脚本里面.但是如果我们有时候很急,不想执行测试呢?重新写一个包含1,3,4
的脚本吗?
这时候可以使用rake来定义任务进行管理.定义的如下:
desc "compile"
task :compile do
puts "执行了编译"
end
desc "copy the jar to prod"
task :copy do
puts "将本地jar包copy到服务器上了,并且执行了"
end
desc "run unit test"
task :test do
puts "执行了test"
end
desc "compile and test and copy"
task :deploy => [:compile,:test,:copy] do
puts "上线了"
end
desc "compile and copy, without test"
task :deploy => [:compile,:copy] do
puts "上线了,没有进行测试,注意点哦"
end
我在rakefile中定义了三个基础的任务,分别为编译
,测试
,copy
.可以分别使用rake compile
,rake test
,rake copy
来执行.
然后定义了两个集合起来的任务,分别为deploy
和deploy_without_test
.可以分别使用rake deploy
和rake deploy_without_test
来执行.
这样就会非常的方便,当我们本地开发时,可以独立的调用三个任务来开发,当我们需要上线时,也可以根据不同的需求来进行执行任务.方便快捷.
执行效果如下:
当然,里面的打印语句需要替换为真正的执行脚本的语句,这里就不再贴出来了.
ChangeLog
2019-04-02 完成
以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com
更多学习笔记见个人博客——>呼延十