什么是Rake?
Rake是一个Ruby的构建工具,也是一个用于项目构建的领域专用语言(DSL)。(可以阅读Martin Fowler《Using The Rake Build Language》)。
Ruby程序员喜欢用Rake作为构建工具,在Rake中你可以声明很多task,也可以声明这些task之间的相互依赖关系,语法简单明了。其实,Rake不仅仅可以用来作为Ruby的构建工具,它可以用于其他语言项目的构建。当然,我不是希望说服所有程序员在他们最擅长的语言下面都使用rake进行构建。但是,玩玩儿还是不错的。说不定还可能因此喜欢上rake了呢。下面分别以不同语言的最简程序为例:(https://github.com/kiwiwin/rake_build)
使用Rake构建C
hello.c
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
毫无疑问,make是C/C++程序员常用的工具,编译这个C程序可以使用一条命令:gcc hello.c -o hello
但是为了说明如何使用rake进行C构建,这里把上面的命令拆成两条命令:gcc -c hello.c; gcc hello.o -o hello
使用Rakefile
file 'hello.o' => 'hello.c' do
`gcc -c hello.c`
end
task :make => 'hello.o' do
`gcc hello.o -o hello`
end
task :clean do
`rm -f *.o hello`
end
task :run => [:clean, :make]do
puts `./hello`
end
task :default => :run
在console中调用rake,就得到hello world了。
使用Rake构建Java
Hello.java
public class Hello {
public static void main(String args[]) {
System.out.println("Hello World");
}
}
Java程序员常用Ant(http://ant.apache.org/)构建。
<project name="Hello" default="dist" basedir=".">
<description>
simple example build Hello World
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/Hello.jar" basedir="${build}"/>
</target>
<target name="clean"
description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
<target name="run" depends="dist"
description="run HelloWorld">
<java classname="Hello">
<classpath>
<pathelement location="${dist}/lib/Hello.jar" />
</classpath>
</java>
</target>
</project>
我们当然可以用类似构建C的方法构建Java,但好消息是,我们有更简单更直观的方法使用Rake构建Java。这需要我们首先安装一个jruby(
http://www.jruby.org/)。jruby是运行在JVM上的ruby。jruby自己已经戴上了定义好的ant task。下面用rake构建一个Java的Hello World。
require 'ant'
PROJECT_NAME = 'Hello'
SRC_DIR = 'src'
BUILD_DIR = 'build'
DIST_DIR = 'dist'
task :default => :dist
task :init do
ant.tstamp
ant.mkdir :dir => BUILD_DIR
end
task :compile => :init do
ant.javac :srcdir => SRC_DIR, :destdir => BUILD_DIR
end
task :dist => :compile do
ant.mkdir :dir => "#{DIST_DIR}/lib"
ant.jar :jarfile => "#{DIST_DIR}/lib/#{PROJECT_NAME}.jar", :basedir => "#{BUILD_DIR}"
end
task :clean do
ant.delete :dir => BUILD_DIR
ant.delete :dir => DIST_DIR
end
task :run => :dist do
ant.java :classname => "#{PROJECT_NAME}" do
classpath :location => "#{DIST_DIR}/lib/#{PROJECT_NAME}.jar"
end
end
运行task:jruby -S rake [task_name]
我倒是觉得第二种方式看起来更简单,更明了。build.xml中想传达的意思很容易就被xml的< >干扰了,不如rake中的直观。
同时,不得不赞叹下jruby中的ant的强大,你不仅可以单独顶一个类似ant的rakefile,你还可以让rake调用ant,也可以让ant调用rake,如果很感兴趣,可以看下这篇文章
《Rake and Ant Together》
使用Rake构建Ruby
ruby程序员应该都很熟悉rake了,就不啰嗦了
(未完待续,使用Rake构建 C#)
分享到:
相关推荐
使用halcon进行测量,使用的是rake算子;使用halcon进行测量,使用的是rake算子;
为 Rust 提供了快速自动关键字提取 (RAKE)算法的多语言实现
Ruby Bamboo 插件这是一个竹插件项目,安装后可以配置运行各种基于 ruby 的构建工具的任务,包括 bundler、rake 和 capistrano。特征通过 Bamboo 任务,此插件使您能够运行: 捆绑器耙卡皮斯特拉诺用法要使用这...
rake详解
rake的matlab程序,经典的rake仿真程序 不错的 很好
halcon提供给我们使用的测量矩形只能返回一个点,操作起来比较复杂,实际项目中不好使用; 为了提高工具的通用性,鲁棒性,也是为了提高项目的开发效率,基于halcon已有的算子进一步开发工具是比较不错的选择。 rake...
是一个包含多种编程语言的项目。 去做 支持 Swift 和 Golang 在评论中添加详细解决方案 在 GitHub 中添加 ci 测试前添加编码风格检查器 解决所有解决方案 要求 语 版本 单元测试 编码风格检查器 C GNU99 是的 不 ...
rake接收机仿真程序,包括多个仿真
rake-compiler首先是Ruby开发人员的生产力工具。 它的目标是通过简化代码和减少重复来简化Ruby扩展的构建和打包,从而使繁忙的开发人员的生活更轻松。 它通过倡导针对基于C和Java的RubyGems的标准化构建和包结构来...
RAKE接收技术是第三代CDMA移动通信系统中的一项重要技术。在CDMA移动通信系统中,由于信号带宽较宽,存在着复杂的多径无线电信号,通信受到多径衰落的影响。RAKE接收技术实际上是一种多径分集接收技术,可以在时间上...
直接序列扩频rake接收机的仿真模型,可以应用于各DSCDMA网络的仿真
针对异地通信网络的3G最佳接收机matlab程序。设计的三种RAKE接收机程序。非常实用。
rake for rails rake-0.8.7安装rails必须资源
rake-0.8.3.gem redmind安装必需
rake for rails 安装rails资源
rake-0.8.7 for rails 安装rails必须的资源
Rake接收机性能仿真(与非Rake接收机对比).pdfRake接收机性能仿真(与非Rake接收机对比).pdf
rake接收(多径分集技术)+matlab仿真程序
tedder:使用Rake的复杂任务的增量构建系统
来自practical rails social networking sites上的第二章的实例,应用了数据导入,导入数据到mysql后就可以使用,命令: rake db:migrate(进入文件夹"railscoder")