auto commit

This commit is contained in:
CyC2018
2020-11-17 00:32:18 +08:00
parent f5ad47b470
commit 7e61fc1360
380 changed files with 2371 additions and 46715 deletions

View File

@ -1,12 +1,10 @@
# 构建工具
<!-- GFM-TOC -->
* [构建工具的作用](#构建工具的作用)
* [Java 主流构建工具](#二java-主流构建工具)
* [Maven](#三maven)
* [参考资料](#参考资料)
* [构建工具](#构建工具)
<!-- GFM-TOC -->
# 构建工具的作用
## 构建工具的作用
构建一个项目通常包含了依赖管理测试编译打包发布等流程构建工具可以自动化进行这些操作从而为我们减少这些繁琐的工作
@ -14,7 +12,7 @@
Java 项目中打包流程通常是将项目打包成 Jar 在没有构建工具的情况下我们需要使用命令行工具或者 IDE 手动打包而发布流程通常是将 Jar 包上传到服务器上
# Java 主流构建工具
## Java 主流构建工具
Ant 具有编译测试和打包功能其后出现的 Maven Ant 的功能基础上又新增了依赖管理功能而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持
@ -53,13 +51,13 @@ dependencies {
}
```
# Maven
## Maven
## 概述
### 概述
提供了项目对象模型POM文件来管理项目的构建
## 仓库
### 仓库
仓库的搜索顺序为本地仓库中央仓库远程仓库
@ -67,7 +65,7 @@ dependencies {
- 中央仓库是下载依赖库的默认位置
- 远程仓库因为并非所有的依赖库都在中央仓库或者中央仓库访问速度很慢远程仓库是中央仓库的补充
## POM
### POM
POM 代表项目对象模型它是一个 XML 文件保存在项目根目录的 pom.xml 文件中
@ -87,9 +85,9 @@ POM 代表项目对象模型,它是一个 XML 文件,保存在项目根目
- version项目版本
- packaging项目打包方式
## 依赖原则
### 依赖原则
### 1. 依赖路径最短优先原则
#### 1. 依赖路径最短优先原则
```html
A -> B -> C -> X(1.0)
@ -97,7 +95,7 @@ A -> D -> X(2.0)
```
由于 X(2.0) 路径最短所以使用 X(2.0)
### 2. 声明顺序优先原则
#### 2. 声明顺序优先原则
```html
A -> B -> X(1.0)
@ -106,15 +104,15 @@ A -> C -> X(2.0)
POM 中最先声明的优先上面的两个依赖如果先声明 B那么最后使用 X(1.0)
### 3. 覆写优先原则
#### 3. 覆写优先原则
POM 内声明的依赖优先于父 POM 中声明的依赖
## 解决依赖冲突
### 解决依赖冲突
找到 Maven 加载的 Jar 包版本使用 `mvn dependency:tree` 查看依赖树根据依赖原则来调整依赖在 POM 文件的声明顺序
# 参考资料
## 参考资料
- [POM Reference](http://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification)
- [What is a build tool?](https://stackoverflow.com/questions/7249871/what-is-a-build-tool)
@ -122,10 +120,3 @@ A -> C -> X(2.0)
- [maven 2 gradle](http://sagioto.github.io/maven2gradle/)
- [新一代构建工具 gradle](https://www.imooc.com/learn/833)
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>