一,Mavenjava
1.1Apache Maven是個項目管理和自動構建工具,基於項目對象模型(POM)的概念, Maven 除了以程序構建能力爲特點以外,還提供高級項目管理工具 。android
做用:完成項目的相關操做,如:編譯,構建,單元測試,安裝,網站生成和基於Maven部署項目。程序員
注:Maven須要聯網使用web
1.2 什麼是POM
Project Object Model,項目對象模型。
經過xml格式保存的pom.xml文件。做用相似ant的build.xml文件,功能更強大。
該文件用於管理:源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目受權、項目的url、項目的依賴關係等等。
最後,根據你的項目須要更新您的pom.xml apache
在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。目前<scope>可使用5個值:
* compile,缺省值,適用於全部階段,會隨着項目一塊兒發佈。
* provided,相似compile,指望JDK、容器或使用者會提供這個依賴。如servlet.jar。
* runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。
* test,只在測試時使用,用於編譯和運行測試代碼。不會隨項目發佈。
* system,相似provided,須要顯式提供包含依賴的jar,Maven不會在Repository中查找它。api
1.3 什麼是自動構建工具?網絡
1.2.1app
* .java->*.class->run
方式一
javac HelloWorld.java
java HelloWorld
方式二
開發工具Eclipsewebapp
1.4 經常使用的自動構建工具
ant
maven
Gradle android項目管理和構建已使用maven
二,Maven安裝與配置
2.1 下載maven安裝包,解壓便可使用
地址:http://maven.apache.org/download.cgi
2.2 配置maven環境變量
2.2.1 MAVEN_HOME
2.2.2 M2_HOME
配置方式跟jdk有些相似,環境變量MAVEN_HOME和M2_HOME的值爲maven的根目錄
M2_HOME
MAVEN_HOME
而後在PATH環境變量里加入「%MAVEN_HOME%\bin;%M2_HOME%\bin;」便可
2.3 驗證maven環境變量
doc窗口執行命令「mvn –version」
配置成功
2.4 修改「MAVEN_HOME\config」下的setting.xml文件,配置本地倉庫。
例如:<localRepository>D:\apache-maven-3.5.0-bin\apache-maven-3.5.0-bin\repository</localRepository>
倉庫的做用就是用來存放jar包的
2.4.1 倉庫的分類
中央倉庫
公司倉庫(也叫私人倉庫或私服)
本地倉庫
中央倉庫(http://search.maven.org/,但通常使用另一個網站:http://www.mvnrepository.com/)
公司倉庫
本地倉庫
公司裏面還會有一個大倉庫(本地)全公司使用
本地倉庫程序員本身使用,私服全公司使用,中央倉庫全部人用
2.4.2:jar的查找順序:本地倉庫->私服->中央倉庫
2.4.3:換源「阿里雲」
2.5 maven插件安裝與配置
設置maven安裝路徑
Installations
指定setting.xml文件User Settings
User Settings
Maven用戶能夠選擇配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml,前者是全局範圍的,
整臺機器上的全部用戶都會直接受到該配置的影響,然後者是用戶範圍的,只有當前用戶纔會受到該配置的影響。
推薦使用用戶範圍的settings.xml,主要是爲了不無心識地影響到系統中的其餘用戶,
並且爲了之後maven升級的方便,直接把配置文件從倉庫拷過去就能夠了。
三. Maven的使用:建立java項目
new一個 Maven project
maven-archetype-webapp
注意Catalog選中Internal
下面那個後綴名選中爲webapp
group id:組織id,通常就是公司域名反寫
artifact id:項目名字
version:版本
package:java包名
四. Maven的使用:建立wep項目
Maven project
maven-archetype-webapp
4.1 在porm.xml中加入servlet api,否則報錯
4.2 更改默認的jdk1.5爲jdk1.8
4.3 更改junit爲4.12
4.4 更改web.xml 默認的爲2.3改成3.1 由於jdk1.8指向3.1的
4.5 修改Project Facets
4.6 添加的配置archetypeCatalog=internal可加快項目建立速度 archetypeCatalog用來指定maven-archetype-plugin讀取archetype-catalog.xml文件的位置:
internal——maven-archetype-plugin內置的
local——本地的,位置爲~/.m2/archetype-catalog.xml
remote——指向Maven中央倉庫的Catalog
4.7項目右鍵-->Maven-->Update Project
五 Maven測試
在src/main/java下建立一個page包寫一個servlet
MavenServlet 測試類
1 package com.maven.test; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 @WebServlet("/maven") 12 public class MavenServlet extends HttpServlet { 13 14 /** 15 * 16 */ 17 private static final long serialVersionUID = 4326535764545072323L; 18 19 @Override 20 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 21 // TODO Auto-generated method stub 22 doPost(req, resp); 23 } 24 25 @Override 26 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 27 // TODO Auto-generated method stub 28 System.out.println("Maven環境搭配成功"); 29 } 30 }
測試結果
六 maven的jar下載流程圖
根據網絡請求的便利性,請求的路徑通常是 本地倉庫 -> 私有倉庫(私有網絡)->中央倉庫(因爲中央倉庫可能在國外咱們可能須要配置鏡像)。