一、Maven
1. 依賴管理
- 傳統的crm項目的jar包是在項目中
- maven開發的crm項目的jar包沒有存儲在項目中,而jar包存儲在jar包倉庫中,項目中僅保留了jar包的坐标,儲存坐标的檔案就是pom.xml
- 當使用maven時,maven會首先去本地倉庫尋找jar包,如果沒有,在聯網的狀态去會自動去中央倉庫下載下傳jar包
2. 安裝
- 首先去官網下載下傳apache-maven-3.6.1-bin.zip壓縮包
- 下載下傳完成後将壓縮包解壓到沒有中文路徑的目錄下
- 設定環境變量:maven的運作是要依賴Java的,是以一定要確定環境變量中有JAVA_HOME
Java學習之Maven
Java學習之Maven - 驗證是否安裝成功:mvn -v
Java學習之Maven
3. maven項目标準目錄結構
- src/main/java目錄:核心代碼部分
- src/main/resources目錄:配置檔案部分
- src/test/java目錄:測試代碼部分
- src/test/resources目錄:測試配置檔案
- src/main/webapp目錄:放置頁面資源,包括js、css、圖檔資源等
二、常用指令
- 清除項目編譯資訊,也就是删除target目錄,在重新編譯前執行
mvn clean
mvn compile
mvn test
- 打包:打包會将main目錄下的代碼和test目錄下的代碼都進行編譯
mvn package
- 安裝:install指令會将項目進行打包,并将打包後的檔案安裝到本地倉庫
mvn install
mvn deploy
三、Maven配置
- 在conf/settings.xml中配置本地倉庫路徑
Java學習之Maven - 在idea的settings中搜尋maven,進行配置
Java學習之Maven
四、建立maven項目
1. 使用骨架建構maven項目
- 進入idea界面,選擇Create New Project,并選擇建立maven項目,并按照下圖進行選擇
Java學習之Maven - 填寫項目相關資訊
Java學習之Maven - 之後一直點選Next,直到項目被idea打開
- 進入idea之後,右下角會有選擇Import Changes,點選導入,idea會自動下載下傳項目所需的jar包
- 使用骨架建立的項目是沒有resources目錄的,需要手動去建立,并将目錄設定為配置檔案目錄,詳見下圖
Java學習之Maven
2. 不使用骨架建構maven項目(推薦使用)
- 不使用骨架,就是在建立的時候直接點選Next
Java學習之Maven - 之後的方式都跟使用骨架一樣,直到idea打開項目
- 項目打開後,Import Changes
- 最後可以看到項目的目錄結構就已經建立完成了,與骨架建立的不同,不使用骨架的時,項目是自帶resources目錄的,詳見下圖
Java學習之Maven
3. 配置項目依賴jar包
- 打開pom.xml檔案,該檔案用于存放jar包的坐标
- 首先先寫一個dependencies标簽,在這個标簽内部可以寫多個dependency标簽,每一個dependency标簽就是一個jar包的坐标,在dependency标簽内部根據idea提示将所需jar包的資訊補充完整
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
- 如果jar包找不到,可以百度“maven中央倉庫”,在倉庫中搜尋jar包,選擇任意版本,找到jar包的坐标,并複制到pom中
Java學習之Maven
Java學習之Maven
Java學習之Maven
4. 解決jar包沖突
- 在pom.xml中使用scope标簽,使jar包僅在寫代碼時生效,項目正式運作的時候不生效
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!--僅在寫代碼時生效-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>provided</scope>
</dependency>
</dependencies>