Java项目开发管理工具-Maven基础
文章目錄
- 一、Maven簡介
- 二、下載與安裝
- 三、Maven基礎概念*
- 3.1 倉庫
- 3.2 坐標
- 3.3 倉庫配置
- 四、第一個Maven項目(手工制作)*
- 4.1 Maven項目結構
- 4.2 Maven項目構建(常用構建指令)
- 4.3 插件創建工程結構
- 五、第二個Maven項目(IDEA生成)*
- 5.1 Maven工程idea創建
- 4.2 tomcat插件安裝與web工程啟動
- 六、依賴管理*
- 6.1 依賴配置
- 6.1 依賴管理
- 6.1.1 依賴傳遞
- 6.1.2 依賴范圍
- 七、生命周期與插件
- 7.1 構建生命周期
- 7.2 插件
一、Maven簡介
1.Maven是什么:
- Maven 的本質是一個項目管理工具,將項目開發和管理過程抽象成一個項目對象模型(POM)
- POM(Project Object Model): 項目對象模型
?
2.Maven的作用:
- 項目構建: 提供標準的、跨平臺的自動化項目構建方式
- 依賴管理: 方便快捷的管理項目依賴的資源(jar包),避免資源間的版本沖突問題
- 統一開發結構:提供標準的、統一的項目結構
?
二、下載與安裝
1、Maven下載:
- 官網: http://maven.apache.org
- 下載地址: http://maven.apache.orq/download.cgi
?
2、Maven環境變量配置:
- 依賴Java,需要配置JAVA HOME
- 設置MAVEN自身的運行環境,需要配置MAVEN_HOME
?
1.配置環境變量:
2.檢測是否安裝成功:
?
三、Maven基礎概念*
3.1 倉庫
1、倉庫:
用于存儲資源,包含各種jar包
?
2、倉庫分類:
- 本地倉庫:自己電腦上存儲資源的倉庫,連接遠程倉庫獲取資源
- 遠程倉庫:非本機電腦上的倉庫,為本地倉庫提供資源
- 中央倉庫:Maven團隊維護,存儲所有資源的倉庫
- 私服:部門/公司范圍內存儲資源的倉庫,從中央倉庫獲取資源
?
3、私服的作用:
(因為具有版權的jar包不能夠放在中央倉庫,因此私服就顯得很重要)
-
保存具有版權的資源,包含購買或自主研發的jar包
- 中央倉庫中的jar都是開源的,不能存儲具有版權的資源
-
一定范圍內共享資源,僅對內部開放,不對外共享
?
3.2 坐標
1、什么是坐標
- Maven中的坐標用于描述倉庫中資源的位置
https://repo1.maven.org/maven2/
?
2、Maven坐標主要組成
- groupld(組織id): 定義當前Maven項目隸屬組織名稱(通常是域名反寫,例如: org.mybatis)
- artifactld(項目id): 定義當前Maven項目名稱(通常是模塊名稱,例如CRM、SMS)
- version(版本號): 定義當前項目版本號
- packaging(類型): 定義該項目的打包方式(如:jar包等)
?
3、Maven官方中央倉庫
- 中央倉庫: https://mvnrepository.com/
- 倉庫中的坐標: maven工具會根據此坐標到倉庫中下載對應 jar 包
?
3.3 倉庫配置
Maven加載依賴:默認先從項目 maven 配置的本地倉庫查找,
- 如果找到,直接使用
- 如果沒有,默認情況下從國外 maven 中央倉庫下載,先下載到本地,再使用.(從國外下載距離遠,非常慢,有可能下載失敗)
?
阿里云鏡像倉庫
- 使用國內的阿里云鏡像倉庫的話會非常快,在本地倉庫沒有時,maven 就會從國內阿內云倉庫找,如果有就下載到本地倉庫再使用,沒有就只能從國外 maven 中央倉庫下載到本地倉庫再使用
1.本地倉庫:
默認在c盤,最好更改為d盤或其它盤
?
2.更改本地倉庫位置:
打開: ?D:\serverEnvirenment\apache-maven-3.6.3\conf\settings.xml
?
3.Maven默認連接下載資源的倉庫位置
默認是國外服務器,下載較慢,可以更改為國內服務器。使用啊里去鏡像。
?
四、第一個Maven項目(手工制作)*
4.1 Maven項目結構
1、Maven工程目錄結構:
在src同目錄下放置maven工程的配置文件:pom.xml
?
2、描述Maven工程的配置文件: pom.xml(在src同層目錄下創建 pom.xml)
?
4.2 Maven項目構建(常用構建指令)
Maven 構建命令使用 mvn 開頭,后面添加功能參數,可以一次執行多個命令,使用空格分隔
?
1.首次執行命令會先下載相應的插件,maven 進行編譯、測試等用的插件,同時下載依賴。然后再進行編譯.
?
2.使用編譯(maven compile)、測試(maven test)、打包(maven package)指令
?
3.安裝到本地倉庫(mvn install)
位置是:com/eve,也就是:com.eve(groupid)
?
4.3 插件創建工程結構
1.創建工程:
mvn archetype:generate-DgroupId={project-packaging}-DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false2.創建java工程:
mvn archetype:generate -DgroupId=com.eve-DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false3.創建web工程:
mvn archetype:generate -DgroupId=com.eve-DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false要求不能是 maven 工程結構(沒有pom.xml等文件)
?
五、第二個Maven項目(IDEA生成)*
5.1 Maven工程idea創建
1.配置 maven
?
2.創建 maven java工程(使用模板)
?
3.創建 maven web項目(使用模板)
?
會發現沒有 java、test 目錄。需要我們自己創建
如果下方還沒有提示,則可以選中創建的 java 文件夾,右擊標記為 Sources Root 即可;
test 則選擇 Test Sources Root;
?
4.2 tomcat插件安裝與web工程啟動
1.在 pom.xml 中配置該插件(如果報紅,右上角會有 maven 小圖標,點擊刷新即可)
2.啟動運行
?
六、依賴管理*
6.1 依賴配置
?
6.1 依賴管理
6.1.1 依賴傳遞
路徑優先:當依賴中出現相同的資源時,層級越深,優先級越低,層級越淺,優先級越高
聲明優先:當資源在相同層級被依賴時,配置順序靠前的覆蓋配置順序靠后的
特殊優先:當同級配置了相同資源的不同版本,后配置的覆蓋先配置的
?
可選依賴:
對外隱藏當前所依賴的資源(不想被看見)
?
排除依賴:
排除依賴指主動斷開依賴的資源,被排除的資源無需指定版本(不想用)
?
6.1.2 依賴范圍
依賴的 jar 默認情況可以在任何地方使用,可以通過 scope 標簽設定其作用范圍
?
作用范圍:
- 主程序范圍有效(main文件夾范圍內)
- 測試程序范圍有效(test文件夾范圍內)
- 是否參與打包(package指令范圍內)
?
默認的是 compile,在主代碼、測試代碼、打包中都能夠使用,而如:junit等,我們并不想在打包中使用,并且只想在 test 中使用。
?
依賴范圍的傳遞性(了解即可):
帶有依賴范圍的資源在進行傳遞時,作用范圍將受到影響
?
七、生命周期與插件
7.1 構建生命周期
1.Maven 構建生命周期描述的是一次構建過程經歷經歷了多少個事件
?
2.Maven 對項目構建的生命周期劃分為 3 套
- clean: 清理工作
- default: 核心工作,例如編譯,測試,打包,部署等
- site: 產生報告,發布站點等
?
3.default 構建生命周期
?
7.2 插件
1. 插件與生命周期內的階段綁定,在執行到對應生命周期時執行對應的插件功能
2. 默認maven在各個生命周期上綁定有預設的功能
3. 通過插件可以自定義其他功能
總結
以上是生活随笔為你收集整理的Java项目开发管理工具-Maven基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python及大数据相关书籍推荐
- 下一篇: 《把时间当作朋友》读书笔记