构建工具简介

自动化和依赖库管理

在 GitHub 上编辑
本页用到的工具版本

Gradle - 7.4.2 // 仅本页面

关于构建工具,我们主要围绕三个点:是什么,为什么,怎么用。

如果曾学过一些现代编程语言如 Go / Rust 等,你会发现这些语言一般都自带构建管理工具,例如 Cargo 。但 JVM 系列语言和其他现代编程语言不同,JVM 语言并没有自带的构建管理工具,因此需要一个第三方的构建管理工具。

将 JVM 系列的构建工具和 Cargo NPM 等对比,就会发现它可能是最强大的构建工具,但同时学习曲线也比较陡峭。

何为构建工具

构建工具是一个自动化管理程序构建的工具。不仅仅是编译代码,还可以管理项目的支持库、创建子项目等,有的构建工具还有单元测试等很多功能。

构建工具的用途

我们从一个情景入手:假设你现在需要开发一个小程序,需要搭建一个 HTTP 服务器,你会怎么做?通常来说你不会选择从头开始编写一个 HTTP 服务器,而是去找现成的支持库。

你在 Google 上找了半天,发现了一个很适合你的项目的 HTTP 库,现在你需要使用使用它。你兴冲冲的点击了 Download ,下完了之后就傻眼了,竟然是一个 .jar 的文件!经过你一番阅读文档,你写了一个很长的指令,成功的让 javac 识别了这个 JAR 文件。

当你编译出了你的项目之后你发现这个库根本就用不了,启动后报错:java.lang.ClassNotDefError 。这时候你才意识到,这个 HTTP 库还使用了其他库。各种库互相依赖互相引用,经过你一番摸索,你发现你下了上百个 JAR 文件,编译指令长度也已经上了天。

问题已经很明显了,你需要管理这些支持库。

安装方法

目前最流行的两个构建工具是 MavenGradle ,通过 SDKMAN! 可以很简单的安装:

1
2
sdk install gradle
sdk install maven

主要推荐使用 Gradle ,在功能上两者差异很小,但是在使用上 Gradle 要更容易使用,除非是 XML 狂热爱好者或者极度不喜欢 DSL 语法。

关于工具的使用、在IDE中的使用,请看下面的章节,通常只需掌握一种主流构建工具即可。