Maven基礎配置
Maven基礎
一、什麼是Maven
Maven 的正確發音是[ˈmevən],而不是「馬瘟」以及其他什麼瘟。Maven 在美國是一個口語化的詞語,代表專家、內行的意思。一個對 Maven 比較正式的定義是這麼說的:Maven 是一個項目管理工具,它包含了一個項目對象模型 (POM:Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。
二、Maven的作用
能幫你構建工程,管理 jar包,編譯代碼,還能幫你自動運行單元測試,打包,生成報表,甚至能幫你部署項目,生成 Web 站點。
三、Maven的使用
3.1、Maven的下載
我們首先要到官網去下載它的安裝軟件。通過百度搜索「Maven「如下:
點擊 Download 鏈接,就可以直接進入到 Maven 軟件的下載頁面:
可以選擇下載最新版。
3.2、Maven的安裝
Maven 下載後,將 Maven 解壓到一個沒有中文沒有空格的路徑下,比如 D盤下面。
解壓後目錄結構如下:
- bin:存放了 maven 的命令,比如我們前面用到的 mvn tomcat:run
- boot:存放了一些 maven 本身的引導程序,如類加載器等
- conf:存放了 maven 的一些配置文件,如 setting.xml 文件
- lib:存放了 maven 本身運行所需的一些 jar 包
至此我們的 maven 軟件就可以使用了,前提是你的電腦上之前已經安裝並配置好了 JDK。
3.3、Maven的環境變量配置
配置 MAVEN_HOME ,變量值就是你的 maven 安裝 的路徑(bin 目錄之前一級目錄)
配置完成後在path中添加如圖:
通過 mvn -v命令檢查 maven 是否安裝成功,找開 cmd 命令,輸入 mvn –v命令,如下圖
我們發現 maven 的版本,及 jdk 的版本符合要求,這樣我們的 maven 軟件安裝就成功了。
四、Maven倉庫
4.1、Maven倉庫的分類
Maven的工作需要從倉庫下載一些 jar,本地倉庫都會通過 maven軟件從遠程倉庫(可以理解為互聯網上的倉庫)下載 jar 包並存在本地倉庫,本地倉庫 就是本地文件夾,當第二次需要此 jar 包時則不再從遠程倉庫下載,因為本地倉庫已經存在了,可以將本地倉庫理解為緩存,有了本地倉庫就不用每次從遠程倉庫下載了。
-
本地倉庫 :用來存儲從遠程倉庫或中央倉庫下載的插件和 jar 包,項目使用一些插件或 jar 包,優先從本地倉庫查找默認本地倉庫位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用戶目錄。
-
遠程倉庫:如果本地需要插件或者 jar 包,本地倉庫沒有,默認去遠程倉庫下載。遠程倉庫可以在互聯網內也可以在局域網內。
-
中央倉庫 :Maven 中央倉庫是由 Maven 社區提供的倉庫,其中包含了大量常用的庫。
中央倉庫包含了絕大多數流行的開源Java構件,以及源碼、作者信息、SCM、信息、許可證信息等。一般來說,簡單的Java項目依賴的構件都可以在這裡下載到。
中央倉庫的關鍵概念:
- 這個倉庫由 Maven 社區管理。
- 不需要配置。
- 需要通過網絡才能訪問。
要瀏覽中央倉庫的內容,maven 社區提供了一個 URL://search.maven.org/#browse。使用這個倉庫,開發人員可以搜索所有可以獲取的代碼庫。
4.2、Maven本地倉庫的配置
先在E盤創建名為jar文件夾,在此文件夾中創建名為maven_repository文件夾,把它作為本地倉庫。
maven的安裝目錄下找到conf文件夾,裏面的settings.xml文件中配置本地倉庫的位置
打開settings.xml文件配置如下:
4.3、Maven倉庫的訪問順序
先在maven的查詢順序為:
首先在本地資源庫中查找依賴,若不存在,則進入下一步,否則,退出;
然後在 遠程倉庫(私服) 中查找依賴,若不存在,則進入下一步,否則,退出;
最後在 中央倉庫 中查找依賴,若不存在,則提示錯誤信息,退出。
三個倉庫:
本地倉庫:本地的一個文件夾,用來存放所有的jar包,由自己維護;
遠程倉庫(或私服):由公司或單位創建的一個倉庫,由公司維護;
中央倉庫:互聯網上的倉庫,由Maven團隊維護
五、pom元素基本配置
5.1坐標定義
在 pom.xml 中定義坐標,內容包括:groupId、artifactId、version,詳細內容如下
<!--項目名稱,定義為組織名+項目名,類似包名-->
<groupId>org.example</groupId>
<!-- 模塊名稱 -->
<artifactId>maven-first</artifactId>
<!-- 當前項目版本號,snapshot 為快照版本即非正式版本,release 為正式發佈版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包類型
jar:執行 package 會打成 jar 包
war:執行 package 會打成 war 包
om :用於 maven 工程的繼承,通常父工程設置為 pom
5.2 pom元素
<project> :文件的根節點 .
<modelversion>:pom.xml 使用的對象模型版本
<groupId > :項目名稱,一般寫項目的域名
<artifactId > :模塊名稱,子項目名或模塊名稱
<version > :產品的版本號 .
<packaging > :打包類型,一般有 jar、war、pom 等
<name > :項目的顯示名,常用於 Maven 生成的文檔。
<description > :項目描述,常用於 Maven 生成的文檔
<dependencies> :項目依賴構件配置,配置項目依賴構件的坐標
<build> :項目構建配置,配置編譯、運行插件等。
<properties>:自定義的Maven屬性
<repositories>:項目的倉庫配置
<inceptionYear>:項目的創始年份
<url>:項目的URL地址
<developers>:項目的開發者信息
<contributors>:項目的貢獻者信息
<distributionManagement>:項目的部署配置
<issueManagement>:項目的缺陷跟蹤系統信息
<ciManagement>:項目的持續集成系統信息
<malilingLists>:項目的郵件列表信息