如题
代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。 – 阮一峰
Make
- 诞生于1977年
- 主要用于C语言
- 支持类Unix和Windows
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| edit : main.o kbd.o command.o display.o cc -o edit main.o kbd.o command.o display.o
main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h cc -c display.c
clean : rm edit main.o kbd.o command.o display.o
.PHONY: edit clean
|
Ant
- 2000年发布,用于构建Java项目
- 解决可恶的Tab问题,使用XML配置
- 跨平台性,操作简单,可集成到开发环境
build.xml实例
1 2 3 4 5 6 7 8 9 10 11 12 13
| <project> <property/> <property/> ...... <target name="init"> ...... </target>
<target> ...... </target> </project>
|
Maven
- 发布于2004年,解决Ant的一些问题
- 靠约定并提供现成的可调用的目标
- 主要有点是生命周期,代价是牺牲了灵活性
pom.xml实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <project> <modelVersion>4.0.0</modelVersion> <groupId>cc.bitky.demo</groupId> <artifactId>demo-module</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <name>demo-module</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> <exclusions> <exclusion></exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency></dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> </plugin> </plugins> </build> <parent></parent> <modules> <module></module> </modules> </project>
|
Gradle
- 2012年华丽诞生
- 被Google选为Android构建工具
- 结合了Ant和Maven的优点,约定好,灵活性也高
- 贯穿软件的生命周期:编译,检查,测试,打包和部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| apply plugin: 'java' apply plugin: 'checkstyle' apply plugin: 'findbugs' apply plugin: 'pmd' version = '1.0' repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3' }
|
前端构建
Node, NPM, Grunt, Gulp, Bower, Webpack, Browserify, Yeoman, Brunch……诸多的名词让你一时间感到手足无措,好像根本学不完。
其实关键就是,不要被它们唬住。要知道,所有这些工具,其最初的设计目的,都是要让你的工作变得更简单。
- 2009年,npm
- 2012年,grunt
- 2012年,bower
- 2013年,yeoman
- 2014年,gulp
- 2015年,fis3
- 2017年,webpack3
- 2018年,@vue-cli