返回介绍

2.1 概述

发布于 2024-09-08 18:29:25 字数 4454 浏览 0 评论 0 收藏 0

构建工具是将软件项目构建相关的过程自动化的工具。构建一个软件项目通常包含以下一个或多个过程:

  • 生成源码(如果项目使用自动生成源码);
  • 从源码生成项目文档;
  • 编译源码;
  • 将编译后的代码打包成 JAR 文件或者 ZIP 文件;
  • 将打包好的代码安装到服务器、仓库或者其它的地方;
    自动化构建过程的好处是将手动构建过程中犯错的风险降到最低。而且,自动构建工具通常要比手动执行同样的构建过程要便捷,不易出错。

表格 21 常见项目构建工具列表

名称简介配置文件命令项目
makeunix/linux 平台最常见的项目构建工具。1997 年斯图亚特·菲尔德曼在贝尔实验室里制作此工具,并应用在 unix 系统里。Makefilemake install/cleanC/C++
cmakecross-platform, open-source make system。可以很方便地管理库、多个子项目。CMakeLists.txtcmake . & makeC++
qmake需要 QT 库支持。qmake.projectqmakeC++
antApache 软件基金会提供的项目构建工具。源于 2003 年 Apache Tomcat 工程。build.xmant [dist|eclipse]Java
maven构建工具。发布于 2004 年。pom.xmmvm [install | clean |package]Java
gradleGroovy based build system。属于于 2012 年。x-build.gradlegradlew [wrapper |assembleDebug]Java
sbtScala 项目构建工具。xx.sbt 或 xx.scala Scala
grunt基于 Node.js 的项目构建工具。详见 《 前端工程化工具package.json Gruntfile Node.js
gulp .js基于流(stream) 的自动化构建工具。详见 《 前端工程化工具  Node.js
npm基于 Node.js 的包管理工具。详见 《 前端工程化工具package.jsonnpm install npm run [build|dev|test]Node.js

备注:1. 命令主要包括安装、更新和运行等等。构建工具本身需要安装,通常下载后解压缩,直接运行二进制程序即可。

  1. gradle 慢慢替代 maven 和 ant。maven 可以两个命令先后使用,如 mvn clean & mvn install 等同于 mvn clean install
  2. nodejs 项目依赖包都可以通过 npm 进行管理,包括构建工具 grunt、gulp、webpack 和 nodejs 本身(通过 n 模块管理 nodejs 版本)。 nodejs 项目工具 参见 《 前端工程化工具

表格 22 maven 和 ant 的比较列表

 MavenAnt
标准构建文件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 针对构建问题的两个不同方面。

  1. Ant Java 技术开发项目提供跨平台构建任务。ant 使用 XML 来描述构建过程和依赖关系。
  2. Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。Maven 主要通过约定(convention)定义构建过程。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文