Rake的使用

背景介绍

学习一下Rake的使用.

简介

Rake 即 Ruby Make,一个用ruby开发的代码构建工具.

主要是用来解决两个问题:

  1. 脚本的管理. 我们经常会为一些大型项目编写许多脚本,甚至一个功能需要多个脚本,如果每次都一个一个执行会比较麻烦.使用Rake可以将这些脚本以任务的形式定义,管理起来会更加的轻松.
  2. 脚本或者任务之间的依赖关系.假设多个脚本之间有一定的依赖关系,那么用Ruby可以管理他们之间的执行顺序.

安装

brew install rake

运行

rake 任务名即可.

rake 文件的编写

rake任务的定义是有一套自己的语法的.

编写任务

定义一个普通的任务:

1
2
3
4
5
desc "One line task description"
task :name_of_task do
#your code goes here
sh 'echo haha'
end

desc: 定义了任务的描述,在使用rake -T或者rake --tasks可以列出所有的任务包含其描述.
task: 定义了任务的名字以及任务的具体执行逻辑,还可以选择参数.

任务之间的依赖

1
2
3
4
desc "Example of a task with prerequisites"
task :task_two => ["task_one"] do
#Your code goes here
end

当执行任务task_two时会检查task_one是否已经执行.

设置默认任务

默认任务及执行rake时调用的任务.

1
task :default => ['my_task']

命名空间

当你的任务非常多,不想他们之间互相影响的时候.可以定义命名空间

1
2
3
4
5
6
7
namespace 'name1' do
# tasks...
end

namespace 'name2' do
# tasks...
end

只是执行的时候要使用rake name1:task1来执行.

一个Demo

假设:

我们的项目在本地开发,部署方式使用jar包部署.那么我们每次想要上线需要几步呢?

  1. 本地编译
  2. 运行测试一下
  3. 将本地jar包发送到服务器上并执行,
  4. 上线成功了.

这四个脚本,每次去手动执行一遍是在是有点麻烦.当然我们可以把他们写在一个脚本里面.但是如果我们有时候很急,不想执行测试呢?重新写一个包含1,3,4的脚本吗?

这时候可以使用rake来定义任务进行管理.定义的如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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来执行.

然后定义了两个集合起来的任务,分别为deploydeploy_without_test.可以分别使用rake deployrake deploy_without_test来执行.

这样就会非常的方便,当我们本地开发时,可以独立的调用三个任务来开发,当我们需要上线时,也可以根据不同的需求来进行执行任务.方便快捷.

执行效果如下:

2019-04-03-00-27-13

当然,里面的打印语句需要替换为真正的执行脚本的语句,这里就不再贴出来了.





ChangeLog

2019-04-02 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十