From a2873a47741b5beea22fd844739db047084ee91c Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 8 Dec 2019 22:01:39 +0800 Subject: [PATCH] auto commit --- docs/notes/构建工具.md | 25 ++++--------------------- notes/pics/image-20191208204118932.png | Bin 0 -> 33533 bytes notes/构建工具.md | 25 ++++--------------------- 3 files changed, 8 insertions(+), 42 deletions(-) create mode 100644 notes/pics/image-20191208204118932.png diff --git a/docs/notes/构建工具.md b/docs/notes/构建工具.md index 4df876d8..a66f3107 100644 --- a/docs/notes/构建工具.md +++ b/docs/notes/构建工具.md @@ -8,34 +8,17 @@ # 一、构建工具的作用 -构建工具是用于构建项目的自动化工具,主要包含以下工作: +构建一个项目通常包含了依赖管理、测试、编译、打包、发布等流程,构建工具可以自动化进行这些操作,从而为我们减少这些繁琐的工作。 -## 依赖管理 +其中构建工具提供的依赖管理能够可以自动处理依赖关系。例如一个项目需要用到依赖 A,A 又依赖于 B,那么构建工具就能帮我们导入 B,而不需要我们手动去寻找并导入。 -不再需要手动导入 Jar 依赖包,并且可以自动处理依赖关系,也就是说某个依赖如果依赖于其它依赖,构建工具可以帮助我们自动处理这种依赖关系。 - -## 运行单元测试 - -不再需要在项目代码中添加测试代码,从而避免了污染项目代码。 - -## 将源代码转化为可执行文件 - -包含预处理、编译、汇编、链接等步骤。 - -## 将可执行文件进行打包 - -不再需要使用 IDE 将应用程序打包成 Jar 包。 - -## 发布到生产服务器上 - -不再需要通过 FTP 将 Jar 包上传到服务器上。 +在 Java 项目中,打包流程通常是将项目打包成 Jar 包。在没有构建工具的情况下,我们需要使用命令行工具或者 IDE 手动打包。而发布流程通常是将 Jar 包上传到服务器上。 # 二、Java 主流构建工具 Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 - -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git a/notes/pics/image-20191208204118932.png b/notes/pics/image-20191208204118932.png new file mode 100644 index 0000000000000000000000000000000000000000..c63576512bd627db2ac6c063d2e3b560522eb5a2 GIT binary patch literal 33533 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 enDPI=YP3
+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。