
文章目錄
- 背景
- Maven第一部分
- 1.1 什么是Maven
- 1.2 倉庫
- 1.3 maven環境搭建
- 1.3.1 下載
- 1.3.2 安裝
- 1.3.3 配置:系統環境變數
- 1.4 Maven使用
- 1.4.1 私有倉庫配置
- 1.4.2 配置鏡像(第三方倉庫,私服)
- 1.5 IDEA 配置
- 1.5.1 IDEA 配置 maven
- 1.5.2 新專案配置
- 1.5.3 配置失敗,重新配置
- 1.6 IDEA 中 maven使用
- 1.6.1 創建maven專案
- 1.6.2 基本使用
- 1.6.3 坐標
- 2. Maven第二部分
- 2.1 坐標
- 2.1.1 什么是坐標(依賴)
- 2.1.2 依賴范圍
- 2.1.3 依賴傳遞&依賴排除
- 2.2 繼承與模塊
- 2.2.1 概述
- 2.2.2 分析
- 2.2.3 實際操作
- 2.3 web專案啟動&訪問
- 2.3.1 打包
- 2.3.2 啟動:配置tomcat方式
- 2.3.3 啟動:tomcat插件方式
- 啟動問題:Could not find artifact
- 后記
背景

國慶期間有粉絲問我有沒有Java大資料的學習筆記,我當時推薦了給他我的博客, 但還有一個板塊缺失:Maven,今天有時間終于整理出來這篇Maven倉庫的學習筆記!
Maven第一部分
1.1 什么是Maven
- maven 是管理專案的工具,
- 專案各個階段:清理、初始化、編譯、測驗、報告 、打包、部署、站點生成,
- maven目前開發內容:
- 依賴管理:維護jar包,
- 測驗
- 打包
- 核心思想:專案物件模型 (Project Object Model),每一個maven專案,都有一個pom.xml檔案,進行專案管理,
1.2 倉庫
- 倉庫分類:私有倉庫、中央倉庫、第三方倉庫(遠程)
- 私有倉庫:每個人本地倉庫,方面離線操作,
- 中央倉庫:官方倉庫,存放所有依賴,在國外,https://search.maven.org/
- 第三方倉庫:由非盈利機構搭建第三方私有倉庫,對外提供依賴下載,
- 阿里云
- 華為云
1.3 maven環境搭建
1.3.1 下載
- 版本:3.5.3 (3.3.9)

1.3.2 安裝
- 將下載資源解壓即可

1.3.3 配置:系統環境變數
- 配置window 系統環境變數
- MAVEN_HOME:
- 內容:maven安裝目錄
- 原因:方法其他環境變數使用、方便其他軟體使用(idea)
- path:
- 內容:maven的bin目錄(使用MAVEN_HOMN 確定安裝目錄)
- 原因:在cmd可以使用maven命令,
- MAVEN_HOME:

1.4 Maven使用
1.4.1 私有倉庫配置
-
私有倉庫的根目錄:
D:\Java\maven\yycg_repository
-
maven配置私有倉庫
%MAVEN_HOME%/conf/settings.xml
1.4.2 配置鏡像(第三方倉庫,私服)
-
配置 aliyun的鏡像
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>

1.5 IDEA 配置
1.5.1 IDEA 配置 maven
-
idea在安裝時,自動使用 MAVEN_HOME 配置的 本地maven,
-
如果沒有識別,手動配置,采用通用配置
File/Settings/Maven...-
配置1:確定maven安裝目錄

-
配置2:更新本地倉庫

-
1.5.2 新專案配置
-
如果通用配置可以,建議使用通用,
-
如果通用不可用,使用新專案配置,

1.5.3 配置失敗,重新配置
-
將idea配置資訊洗掉(如果洗掉,相當于新安裝的idea,包括激活碼沒有了,)

1.6 IDEA 中 maven使用
1.6.1 創建maven專案
-
步驟1:選擇maven,進行專案創建

-
步驟2:填寫專案詳情

-
步驟3:開啟自動匯入
- idea 2019 能夠選擇開啟自動匯入
- idea 2020及其之后版本,必須手動操作

1.6.2 基本使用
-
maven專案的生命周期命令的使用,

1.6.3 坐標
-
坐標:在maven中每一個專案都一個唯一標識,這個標識稱為坐標,也稱為依賴 dependency ,
-
坐標組成:組、標識、版本

-
通過坐標完成的使用
- 在maven專案中,通過坐標可以匯入對應的jar包,
- 可以在本地倉庫中,通過坐標獲得jar包具體的位置,
-
使用坐標
-
情況1:直接使用
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> </dependencies> -
情況2:先鎖定版本,再使用
<!-- 鎖定版本 --> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> </dependencies> </dependencyManagement> <!--使用--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> -
情況3:先定義版本,再鎖定版本,最后使用
<!-- 版本號 --> <properties> <junit.version>4.9</junit.version> </properties> <!-- 鎖定版本 --> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> </dependencies> </dependencyManagement> <!--使用--> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
-
2. Maven第二部分
2.1 坐標
2.1.1 什么是坐標(依賴)
-
坐標:用于唯一標識一個專案xml配置,有稱為依賴,
-
組成部分:組、標識、版本
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency>
2.1.2 依賴范圍

-
依賴范圍:坐標/依賴/jar包,在maven專案中,使用的范圍,
- 此范圍包括3種時態:編譯時、測驗時、運行時,
-
依賴范圍種類:
-
compile ,默認值,在3個時態(編譯時、測驗時、運行時)中都可以使用,
-
test ,測驗,僅在
測驗時有用,其他時沒有此jar,例如:Junit -
provided,僅在
編譯時、測驗時有用,例如:servlet、jsp相關(必須操作的,) -
runtime,僅在
測驗時、運行時有用,例如:jdbc驅動 -
system,maven倉庫之外的jar包,(不建議)
- 如果有倉庫之外的jar包,建議先安裝到本地倉庫中,
mvn install:install-file -DgroupId=com.czxy -DartifactId=itcasttools -Dversion=1.5.8 -Dpackaging=jar -Dfile=E:\develop\jars\itcast-tools-1.5.8.jar
<!--默認值,3個時態都有效--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> <scope>compile</scope> </dependency> <!--測驗時,有效--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <!-- 編譯時、測驗時,2個時態有效 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!-- 測驗時、運行時,2個時態有效 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> <scope>runtime</scope> </dependency> -
2.1.3 依賴傳遞&依賴排除
-
依賴傳遞:依賴與依賴之間關系,稱為依賴傳遞,
- 當A依賴B、B依賴C,在A中匯入B后會自動匯入C,C是A的傳遞依賴,
-
依賴傳遞原則:
-
原則1:配置優先原則 ?(測驗結果:覆寫原則)
-
原則2:路徑最短原則
A --> B --> C 1.1 A --> C 1.0 采納:C 1.0 -
結論:如果
依賴傳遞后的版本不是實際需要的版本,需要單獨引入,通常將傳遞的依賴進行依賴排除
-
<!-- druid-spring-boot-starter 依賴傳遞 druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
<scope>compile</scope>
<!-- 依賴排除 -->
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 手動移入druid,采用【最短路徑原則】-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
2.2 繼承與模塊
2.2.1 概述
-
在專案開發中,一個專案比較大,通常將專案進行拆分,方便專案維護、升級等操作,
-
拆分方式:
- 方式1:按照軟體
分層進行拆分,- 例如:common、domain、dao、service、web
- 方式2:按照
模塊進行拆分,- 例如:common、domain、user、order、… 等
- 方式1:按照軟體
-
maven通過
繼承與模塊對拆分進行支持- 創建父專案
- 為父專案,創建多個子專案,
- 每一個子專案,就是一個
模塊, - 父專案和子專案,通過
繼承體現父子關系,
2.2.2 分析
- 創建父專案:day17_maven_parent
- 創建子專案:
- day17_common
- day17_domain
- day17_dao
- day17_service
- day17_web
- 總結:
- 父專案的配置:
- 子專案的配置:
2.2.3 實際操作
-
創建父專案:day17_maven_parent

-
創建子專案:
- day17_common
- day17_domain
- day17_dao
- day17_service
- day17_web
總結:
-
專案結構:

-
父專案的配置:

-
子專案的配置:
-
通用配置,參考其他依賴(web --> service --> dao --> domain --> common)
<dependencies> <dependency> <groupId>com.czxy</groupId> <artifactId>day17_service</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> -
除web專案外,其他專案:

-
web專案:
-
方式1:標準web開發,需要使用 jsp 等資源,需要將專案打包成war包,

-
方式2:spring boot + RestFul風格,打包方式仍是jar包,
-
-
2.3 web專案啟動&訪問
2.3.1 打包

-
打包之后

2.3.2 啟動:配置tomcat方式
-
創建web專案作業目錄
webapp,并創建首頁index.html
-
配置tomcat

-
部署web專案

-
啟動

-
訪問
http://localhost:8080/day17_web_war/
2.3.3 啟動:tomcat插件方式
-
創建web專案作業目錄
webapp,并創建首頁index.html(已有) -
如果沒有配置 WEB-INF/web.xml 檔案,啟動有例外,可以禁用
<properties> <!--宣告不需要web.xml檔案--> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>
-
給web專案 pom.xml檔案配置tomcat插件

<build> <plugins> <!-- tomcat7插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>8080</port> <server>tomcat7</server> </configuration> </plugin> </plugins> </build> -
運行對應命令
tomcat7:run
啟動問題:Could not find artifact
- 錯誤的提示資訊

-
解決方案:將
父專案安裝到maven私有倉庫中
-
存在問題:代碼更新不及時,需要手動頻繁的安裝
后記
📢博客主頁:https://manor.blog.csdn.net
📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
📢本文由 manor 原創,首發于 CSDN博客🙉
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325570.html
標籤:java
上一篇:這是升級標準庫鎖的有效方法嗎?
