一、Maven簡介
1.1 在項目中如何導入jar包?
- 下載jar包 (mvn)
- 將下載的jar包拷貝到項目中(WEB-INF/lib)
- 選擇jar文件–右鍵–Add as Library
1.2 傳統導入jar包的方式存在什么問題?
- 步驟多(相對)——
繁瑣
- 在不同的項目中如果需要相同的jar包,需要分別存儲這個jar文件——
冗余
、項目體積大
- 在不同的環境下可能因為jar文件版本不一致導致項目無法運行(重新配置)——
移植性差
1.3 項目生命周期
項目從編譯到運行的整個過程
完整的生命周期:清理緩存—校驗—編譯—測試—打包—安裝—部署
- IDEA提供了一鍵構建項目的功能,但是如果我們需要自定義的生命周期管理,卻沒有現成的工具(清理緩存)
1.4 Maven簡介
Maven是一個
基于項目對象模型(POM)用于進行項目的依賴管理、生命周期管理的
工具軟件
核心功能
-
依賴管理
-
生命周期管理
-
聚合工程
二、Maven安裝及配置
2.1 Maven下載
- http://maven.apache.org/download.cgi
2.2 Maven安裝
Maven是基于Java語言進行開發的,因此依賴JDK(建議JDK1.7+)
開箱即用:直接解壓即可
- 解壓(d:/mvn)
- 目錄結構:
- bin 存放指令文件(Maven提供了一個mvn指令)
- boot 包含了一個類加載框架的jar文件
- conf 包含了Maven的核心配置文件settings.xml
- lib 存放了maven運行所需的jar文件
2.3 配置環境變量
-
MAVEN_HOME
D:\mvn\apache-maven-3.6.3 -
Path
增加 %MAVEN_HOME%\bin
測試 |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-czWP5lwp-1639493922539)(imgs/1615948601495.png)] |
三、Maven的項目結構
使用Maven進行項目還有一個好處:無論使用什么樣 的開發工具(eclipse/idea)項目的結構是統一的。
3.1 Maven的項目結構
fmwy(項目名稱)
--src--main (存放項目的源文件)--java (存放java代碼,相當于傳統項目中的src目錄)--resources (存放配置文件和靜態資源的目錄,相當于傳統項目的web目錄)--test (存放項目的單元測試代碼)--java(測試代碼)
--pom.xml
3.2 pom.xml
POM Project Object Model,Maven可以根據pom文件的配置對此項目進行依賴管理;也就是說項目中需要依賴,直接在pom.xml進行配置即可
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--指定項目模型版本--><modelVersion>4.0.0</modelVersion><!--指定項目的標識:G 企業標識 A 項目標識 V 版本--><groupId>com.qfedu</groupId><artifactId>fmwy</artifactId><version>1.0.0</version><!--配置當前項目的依賴--><dependencies></dependencies>
</project>
如果需要在當前項目中添加依賴,只需在pom.xml文件中進行依賴配置即可
配置依賴 找到依賴的坐標,添加dependencies標簽即可
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>
四、依賴管理
4.1 Maven依賴管理的流程
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4getFT2I-1639493922540)(imgs/1615952656309.png)]
4.2 Maven倉庫介紹
本地倉庫
就是本地計算機上的某個文件夾(可以是自定義的任何文件夾)遠程倉庫
就是遠程主機上的jar文件倉庫中央倉庫
maven官方提供的倉庫,包含了所需的一切依賴(免配置)公共倉庫
除了中央倉庫以外的第三方倉庫都是公共倉庫,例如aliyun(需要配置)私服
企業搭建的供內部使用的maven倉庫
maven倉庫 |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EUsfIjWB-1639493922542)(imgs/1615953762130.png)] |
4.3 Maven倉庫配置
在maven_home/conf/settings.xml中進行配置
配置本地倉庫
<localRepository>d:\repo</localRepository>
配置公共倉庫
<mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
</mirrors>
五、項目生命周期管理
5.1 生命周期介紹
項目構建的聲明周期:項目開發結束之后部署到運行環境運行的過程
- 清除緩存
- 檢查
- 編譯
- 測試(就會執行maven項目中test目錄下的單元測試)
- 打包(war 、 jar)
- 安裝 (jar會被安裝到本地倉庫)
- 部署 (將項目生成的包放到外部服務器中—私服倉庫)
5.2 生命周期管理指令
在項目的根目錄下執行mvn指令(此目錄下必須包含pom.xml)
- 清除緩存
mvn clean
- 檢查
mvn check
- 編譯
mvn compile
- 測試
mvn test
- 打包
mvn package
- 安裝
mvn install
- 部署
mvn deploye
六、基于IDEA的Maven使用
6.1 在IDEA中關聯Maven
maven配置 |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-deeeiH8r-1639493922543)(imgs/1615963348490.png)] |
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JX37BPXo-1639493922543)(imgs/1615963666386.png)] |
說明:
IDEA本身集成了Maven,考慮到IDEA和Maven版本的兼容性,Idea不建議配置比默認版本更新的版本,建議使用idea自帶的maven。
6.2 使用IDEA創建Maven項目
6.2.1 Java項目
創建Java項目 |
---|
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5R9OQfeU-1639493922544)(imgs/1615964274767.png)] |
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v1wQOwiB-1639493922545)(imgs/1615964923674.png)] |
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-m4dYghBA-1639493922545)(imgs/1615965081111.png)] |
6.2.2 web項目
-
創建maven項目:maven-demo2
-
在pom.xml文件設置打包方式為war
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qfedu</groupId><artifactId>maven-demo2</artifactId><version>1.0.0</version><!--設置項目打包方式為war--><packaging>war</packaging></project>
-
完成web項目結構
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8WjDxUSM-1639493922547)(imgs/1615966156430.png)]
-
配置web組件—Tomcat
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lPE9NhSB-1639493922548)(imgs/1615966233010.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1bDLLGSg-1639493922548)(imgs/1615966284891.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rZy4Cccd-1639493922549)(imgs/1615966379430.png)]
-
部署web項目
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XnmqI1I6-1639493922550)(imgs/1615966537967.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ItrjW2wt-1639493922552)(imgs/1615966622390.png)]
6.3 在IDEA中使用Maven進行依賴管理
6.3.1 查找依賴坐標
- https://mvnrepository.com/
6.3.2 添加依賴
- 將依賴的坐標配置到項目的pom.xml文件dependencies標簽中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qfedu</groupId><artifactId>maven-demo2</artifactId><version>1.0.0</version><!--設置項目打包方式為war--><packaging>war</packaging><dependencies><!--在此位置配置項目中所需依賴的坐標 GAV--><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>provided</scope></dependency></dependencies>
</project>
6.3.3 依賴范圍
在通過dependency添加依賴時,可以通過
scope
標簽配置當前依賴的適用范圍
-
test 只在項目測試階段引入當前依賴(編譯、測試)
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope> </dependency>
-
runtime 只在運行時使用(運行、測試運行)
-
provided 在(編譯、測試、運行)
-
compile 在(編譯、測試、運行、打包)都引入
6.4 在IDEA中使用Maven進行項目構建
6.4.1 Maven項目構建生命周期說明
- clean 清理緩存 清理項目生成的緩存
- validate 校驗 驗證項目需要是正確的(項目信息、依賴)
- compile 編譯 編譯項目專供的源代碼
- test 測試 運行項目中的單元測試
- package 打包 將項目編譯后的代碼打包成發布格式
- verify 檢查 對集成測試的結果進行檢查、確保項目的質量是達標的
- install 安裝 將包安裝到maven的本地倉庫,以便在本地的其他項目中可以引用此項目(聚合工程)
- deploy 部署 將包安裝到私服的倉庫,以供其他開發人員共享
6.4.2 IDEA進行生命周期管理
-
可視化
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3zlBGV49-1639493922553)(imgs/1615970887716.png)]
-
終端指令
選擇項目名稱—右鍵—Open in Terminal
mvn clean
七、私服
企業搭建供內部使用的一個Maven倉庫
- 開發者需要依賴直接從私服下載
- 私服可以實現企業內部依賴的共享:當企業開發了一個通用插件(jar),可以發布到私服,可以連接到當前私服的其他開發者就可以共享這個插件了
7.1 私服搭建
我們可以通過專門的Maven倉庫管理軟件來搭建私服。例如:Apache Archiva、Nexus
7.1.1 下載Nexus
- 官網 https://www.sonatype.com/
- 下載 https://help.sonatype.com/repomanager2/download
7.1.2 解壓nexus
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-msbenlmB-1639493922556)(imgs/1615972207503.png)]
7.1.3 安裝并運行nexus
-
進入到
nexus-2.14.11-01/bin
目錄 -
管理員身份打開cmd命令行,執行指令
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gk00OGO6-1639493922559)(imgs/1615972590023.png)]
7.1.4 登錄Nexus
私服管理器登錄地址: http://localhost:8081/nexus
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-w6LzUBsH-1639493922560)(imgs/1615972765110.png)]
- 私服中倉庫類型
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VFt0wc7V-1639493922561)(imgs/1615972987904.png)]
- 私服倉庫組的配置
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DbBt9WmM-1639493922562)(imgs/1615973337723.png)]
7.2 配置私服
7.2.1 在maven的settings.xml文件的servers
標簽中
<!--配置連接私服所需的帳號和密碼-->
<server> <id>nexus-public</id> <!-- nexus的認證id --><username>admin</username> <!--nexus中的用戶名密碼--><password>admin123</password>
</server>
7.2.2 在maven的settings.xml文件的profiles
標簽中
repository 和 pluginRepository的 id子標簽的值,要和上面配置的server 的id子標簽的值一致
<profile> <id>nexus</id> <repositories> <repository> <id>nexus-public</id> <name>Nexus Release Snapshot Repository</name> <url>http://localhost:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository></repositories> <pluginRepositories><pluginRepository> <id>nexus-public</id> <url>http://localhost:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories>
</profile>
7.2.3 在maven的settings.xml文件的activeProfiles
配置激活profile
<activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>