- 1 开发工具 IDE
- 1.1 开发工具概述
- 1.2 IDE Eclipse
- 1.3 IDE IntelliJ IDEA
- 1.4 IDE Pycharm
- 1.5 IDE Visual Studio Code
- 本章参考
- 2 项目构建工具
- 2.1 概述
- 2.2 make/makefile
- 2.3 make 家族
- 2.4 Ant
- 2.5 Maven
- 2.6 Gradle
- 2.7 sbt
- 本章参考
- 3 包/模块管理
- 3.1 软件包管理 .package (按 OS 划分)
- 3.2 模块管理.module (按语言划分)
- 3.3 自定义安装程序
- 本章参考
- 4 软件制品仓库 Artifactory
- 4.1 仓库
- 4.2 仓库管理软件
- 本章参考
- 5 软件设计工具
- 模型和代码转化工程
- 6 其它工具技巧
- 远程终端 SSH
- 开发
- 源码、文档编辑
- 小技巧
- 本章参考
- 参考资料
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2.1 概述
构建工具是将软件项目构建相关的过程自动化的工具。构建一个软件项目通常包含以下一个或多个过程:
- 生成源码(如果项目使用自动生成源码);
- 从源码生成项目文档;
- 编译源码;
- 将编译后的代码打包成 JAR 文件或者 ZIP 文件;
- 将打包好的代码安装到服务器、仓库或者其它的地方;
自动化构建过程的好处是将手动构建过程中犯错的风险降到最低。而且,自动构建工具通常要比手动执行同样的构建过程要便捷,不易出错。
表格 21 常见项目构建工具列表
名称 | 简介 | 配置文件 | 命令 | 项目 |
---|---|---|---|---|
make | unix/linux 平台最常见的项目构建工具。1997 年斯图亚特·菲尔德曼在贝尔实验室里制作此工具,并应用在 unix 系统里。 | Makefile | make install/clean | C/C++ |
cmake | cross-platform, open-source make system。可以很方便地管理库、多个子项目。 | CMakeLists.txt | cmake . & make | C++ |
qmake | 需要 QT 库支持。 | qmake.project | qmake | C++ |
ant | Apache 软件基金会提供的项目构建工具。源于 2003 年 Apache Tomcat 工程。 | build.xm | ant [dist|eclipse] | Java |
maven | 构建工具。发布于 2004 年。 | pom.xm | mvm [install | clean |package] | Java |
gradle | Groovy based build system。属于于 2012 年。 | x-build.gradle | gradlew [wrapper |assembleDebug] | Java |
sbt | Scala 项目构建工具。 | xx.sbt 或 xx.scala | Scala | |
grunt | 基于 Node.js 的项目构建工具。详见 《 前端工程化工具 》 | package.json Gruntfile | Node.js | |
gulp .js | 基于流(stream) 的自动化构建工具。详见 《 前端工程化工具 》 | Node.js | ||
npm | 基于 Node.js 的包管理工具。详见 《 前端工程化工具 》 | package.json | npm install npm run [build|dev|test] | Node.js |
备注:1. 命令主要包括安装、更新和运行等等。构建工具本身需要安装,通常下载后解压缩,直接运行二进制程序即可。
- gradle 慢慢替代 maven 和 ant。maven 可以两个命令先后使用,如
mvn clean & mvn install
等同于mvn clean install
- nodejs 项目依赖包都可以通过 npm 进行管理,包括构建工具 grunt、gulp、webpack 和 nodejs 本身(通过 n 模块管理 nodejs 版本)。 nodejs 项目工具 参见 《 前端工程化工具 》
表格 22 maven 和 ant 的比较列表
Maven | Ant | |
---|---|---|
标准构建文件 | project.xml 和 maven.xml (后面版本二合一为 pom.xml) | build.xml |
特性处理顺序 | ${maven.home}/bin/driver.properties ${project.home}/project.properties ${project.home}/build.properties ${user.home}/build.properties 通过 -D 命令行选项定义的系统特性 最后一个定义起决定作用。 | 通过 -D 命令行选项定义的系统特性 由 任务装入的特性 第一个定义最先被处理。 |
构建规则 | 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 | 构建规则或多或少是静态的,除非使用 <script> 任务 |
扩展语言 | 插件是用 Jelly(XML)编写的。 | 插件是用 Java 语言编写的。 |
构建规则可扩展性 | 通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。 | 构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。 |
其它 | 声明式,POM 文件描述项目的资源,每一个项目都有一个 POM 文件。 | 命令式,定义了操作和操作执行的顺序,没有默认的目录结构。 |
备注:Maven 和 Ant 针对构建问题的两个不同方面。
- Ant 为 Java 技术开发项目提供跨平台构建任务。ant 使用 XML 来描述构建过程和依赖关系。
- Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。Maven 主要通过约定(convention)定义构建过程。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论