Maven_學習、搭建、應用
一、什麼是Maven?
Apache maven 官網: http://maven.apache.org/
Maven3的所有版本的下載地址:https://archive.apache.org/dist/maven/maven-3/
Apache Maven是一個軟體專案管理和綜合工具。基於專案物件模型(POM)的概念,Maven可以從一箇中心資料片管理專案構建,報告和檔案。
這是maven的一系列執行流程:
二、maven的安裝和配置
Maven的安裝,解壓maven的安裝包即可使用
Maven的目錄介紹
Bin:存放執行指令碼檔案的地方
Boot:存放一些擴充套件的地方
Conf:maven的核心配置檔案存放的路徑
Lib:maven的依賴包
maven的配置:
主要的配置檔案是 conf >> settings.xml
在配置檔案中主要配置以下內容:
1、配置本地倉庫的路徑
2、可以選擇配置阿里雲的maven倉庫映象(對於maven倉庫的jar下載速度有影響)
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
3、配置maven的環境變數
MAVEN_HOME=該處填寫個人maven的路徑E:\apache-maven-3.2.1 Path=%MAVEN_HOME%\bin
4、進行驗證
到此說明maven已經安裝完畢。
三、maven與eclipse的整合開發
1、如果eclipse沒有maven外掛,就需要安裝外掛,開啟eclipse驗證下
開啟window >> preferences >> maven 如果沒有maven就需要安裝外掛 —> 2
2、安裝maven外掛
開啟eclipse點選help-->Install New Software,然後輸入要
下載外掛的連結地址 http://m2eclipse.sonatype.org/sites/m2e 後回車,勾選擇要下載的項,點選下一步進行下載。下載完成會自動安裝
速度可能會有些慢,還有第二種離線安裝的方法,網路搜尋 eclipse-maven-plugin 進行下載
複製到eclipse的安裝目錄下,如果提示資料夾已經存在,直接合並即可。
3、進行重啟驗證是否安裝成功
4、進行相關配置
配置maven的安裝目錄
window > preferences > maven >Installations > Add > Directory(選擇你的maven目錄) > Finsh > Apply 應用即可
配置maven倉庫的位置
其中預設選擇maven安裝目錄下的settings.xml,可以自己自定義maven倉庫目錄(推薦)。
四、在eclipse中進行maven專案的開發
1、java專案工程的開發
這裡選擇可以跳過maven骨架的設定(推薦)
2、javaweb專案的開發
只是這裡的選擇是 war
對於maven中的web.xml檔案缺失問題,可以使用 專案上右擊選擇javeEE的工具幫我們建立
每個maven軟體專案的管理和工具都在pom.xml中進行配置 詳細看 ——> 五
五、maven的核心概念
1、maven中座標的概念
Maven世界擁有大量構建,我們需要找一個用來唯一標識一個構建的統一規範,擁有了統一規範,就可以把查詢工作交給機器
Maven座標主要組成
• groupId:定義當前Maven專案隸屬專案
• artifactId:定義實際專案中的一個模組
• version:定義當前專案的當前版本
• packaging:定義該專案的打包方式
2、maven的依賴管理與依賴範圍
如何進行依賴配置?
傳遞性依賴和可選依賴,排除依賴
其中依賴範圍scope 用來控制依賴和編譯,測試,執行的classpath的關係. 主要的是三種依賴關係如下:
1.compile: 預設編譯依賴範圍。對於編譯,測試,執行三種classpath都有效
2.test:測試依賴範圍。只對於測試classpath有效
3.provided:已提供依賴範圍。對於編譯,測試的classpath都有效,但對於執行無效。因為由容器已經提供,例如servlet-api
4.runtime:執行時提供。例如:jdbc驅動
依賴範圍對傳遞依賴的影響
Maven的直接依賴與間接依賴
3、maven 倉庫管理
用來統一儲存所有Maven共享構建的位置就是maven倉庫(簡單而言就是專案所需的各種依賴jar包)
Maven倉庫佈局
• 根據Maven座標定義每個構建在倉庫中唯一儲存路徑
• 大致為:groupId/artifactId/version/artifactId-version.packaging
倉庫的分類
• 本地倉庫
~/.m2/repository/
每個使用者只有一個本地倉庫
• 遠端倉庫
• 中央倉庫:Maven預設的遠端倉庫
http://repo1.maven.org/maven2
• 私服:是一種特殊的遠端倉庫,它是架設在區域網內的倉庫
4、maven的生命週期
何為生命週期?
• Maven生命週期就是為了對所有的構建過程進行抽象和統一
• 包括專案清理,初始化,編譯,打包,測試,部署等幾乎所有構建步驟
Maven三大生命週期
• clean:清理專案的
• default:構建專案的
• site:生成專案站點的
• 生命週期Maven有三套相互獨立的生命週期,請注意這裡說的是“三套”,而且“相互獨立”,這三套生命週期分別是:
Clean Lifecycle 在進行真正的構建之前進行一些清理工作。
Default Lifecycle 構建的核心部分,編譯,測試,打包,部署等等。
Site Lifecycle 生成專案報告,站點,釋出站點。
再次強調一下它們是相互獨立的,你可以僅僅呼叫clean來清理工作目錄,僅僅呼叫site來生成站點。當然你也可以直接執行 mvn clean install site 執行所有這三套生命週期。
5、maven的外掛
• Maven的核心僅僅定義了抽象的生命週期,具體的任務都是交由外掛完成的
• 每個外掛都能實現多個功能,每個功能就是一個外掛目標
• Maven的生命週期與外掛目標相互繫結,以完成某個具體的構建任務
例如:
<build> <plugins> <!-- 配置Tomcat外掛 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <path>/</path> <port>8086</port> </configuration> </plugin> <!-- maven的原始碼打包外掛 --> <plugin> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build>View Code
6、maven的私服
什麼是私服?
為什麼使用Nexus私服軟體?
Nexus安裝與使用
Nexus的倉庫和倉庫組
宿主倉庫
代理倉庫
倉庫組
配置Maven從Nexus下載,部署構建
有關於maven私服的使用較少,想了解的可以參考:
搭建私服那點事:https://www.cnblogs.com/zishengY/p/7794923.html