Maven是一個項目管理工具,它包含了這些邏輯:一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)。當你使用Maven的時候,你用一個明肯定義的項目對象模型來描述你的項目,而後Maven能夠應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
java
Maven規範化構建流程:web
用 maven 對項目進行管理,能夠幫咱們構建工程,管理jar包,編譯代碼,減少工程佔用的空間,還能幫咱們自動運行單元測試,打包,生成報表,甚至部署項目等等apache
Maven依賴管理:windows
a.下載:api
Maven官網下載瀏覽器
b.安裝:緩存
與普通軟件同樣,不要有特殊符號與空格tomcat
c.目錄結構:jsp
maven 的目錄結構:maven
bin:存放了 maven 的命令
boot:存放了一些 maven 自己的引導程序,如類加載器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 自己運行所需的一些 jar 包
至此咱們的 maven 軟件就可使用了,固然了前提是你的電腦上以前已經安裝並配置好了 JDK複製代碼
a.配置MAVEN_HOME:
配置MAVEN_HOME,變量值就是你的 maven安裝的路徑(bin目錄以前一級目錄)
添加到Path路徑
b.檢查Maven是否配置成功:
打開 cmd ,輸入 mvn -v 若出現 maven 的版本號,即安裝成功
maven 的工做須要從倉庫下載一些 jar 包,本地的項目都會經過 maven 軟件從遠程倉庫(能夠理解爲互聯網上的倉庫)下載 jar 包並存在本地倉庫,本地倉庫就是本地文件夾,當第二次須要此 jar 包時則再也不從遠程倉庫下載,由於本地倉庫已經有在了,能夠將本地倉庫理解爲緩存,有了本地倉庫就不用每次從遠程倉庫下載了。
默認本地倉庫位置在{user.din}/.m2/repository,{user.dir}表示 windows用戶目錄
若須要修改本地倉庫位置,首先打開 conf 目錄下的 settings.xml 文件,再找到
標籤(大概在56行),而後把本身所配置的本地倉庫目錄填上去,如本人的本地倉庫:
D:apache-maven-3.5.2maven_repository
配置完後,終於能夠開始使用 maven 了!!!
進入一個 HelloWord 的 maven Web工程目錄(當前目錄有 pom. Xm文件),運行 mvn tomcat:run命令。而後根據提示打開瀏覽器輸入資源地址(如:localhost:8080/hello_maven/),便可出現運行結果: Hello World。
mvn compile 是 maven 工程的編譯命令,做用是將sr/main/ava下的文件編譯爲 class 文件輸出到 target
目錄下。複製代碼
mvn test 是 maven 工程的測試命令,會執行 src/test/java下的單元測試類複製代碼
mvn clean 是 maven 工程的清理命令,執行 clean 會刪除 target目錄及內容複製代碼
mvn package是 maven 工程的打包命令,對於 java 工程執行 package 打成 jar 包,對於 web 工程打成 war 包
複製代碼
mvn install 是 maven 工程的安裝命令,執行 instal 將 maven 打成 jar 包或 war 包發佈到本地倉庫複製代碼
注:當後面的命令執行時,前面的操做過程也都會自動執行,
-> Create New Project
普通 Java 工程能夠選擇骨架: maven-archetype-quickstart
IDEA 第一次建立 maven 工程會下載許多依賴包,故時間會比較長
控制檯出現 BUILD SUCCESS 則說明成功
手動添加 src/main/java 目錄,以下圖右鍵 man 文件夾 → New → Directory,2019 版 IDEA 的 新建 Maven 工程,增長了自動隱藏 Make Directory → Sources Root 的步驟,會有提示 java 做爲自由根目錄
src/main/java 建立了一個 Servlet,但報錯
解決方案,就是要將 servlet-api-xxx.jar 包放進來,做爲 maven 工程應當添加 servlet 的座標,從而導入它的 jar
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>複製代碼
座標定義以下:
座標來源:
添加依賴須要指定依賴 jar 包的座標,可是不少狀況咱們是不知道 jar 包的的座標,能夠經過以下兩個網址查詢:
http://search.mavenorg/http://mvnrepository.com
A依賴B,須要在A的 pomum文件中添加B的座標,添加座標時須要指定依賴範圍,依賴範圍包括:
compile:編譯範圍,指 A 在編譯時依賴 B ,此範圍爲默認依賴範圍。編譯範圍的依賴會用在編譯、測試、運行,因爲運行時須要因此編譯範圍的依賴會被打包。
provided: provided 依賴只有在當 JDk 或者一個容器己提供該依賴以後才使用, provided 依賴在編譯和測試時須要,在運行時不須要,好比: servlet api 被 tomcat 容器提供。
runtime: runtime依賴在運行和測試系統的時候須要,但在編譯的時候不須要。好比:jdbc的驅動包。因爲運行時須要因此 runtime 範圍的依賴會被打包
test:test範圍依賴在編譯和運行時都不須要,它們只有在測試編譯和測試運行階段可用好比:junt 因爲運行時不須要因此 test 範圍依賴不會被打包。
system: system 範圍依賴與 provided相似,可是你必須顯式的提供一個對於本地系統中JAR文件的路徑,須要指定 systemPath 磁盤路徑, system 依賴不推薦使用。
<scope> 依賴範圍 </scope>複製代碼
默認引入的 jar 包 -- compile【默認範圍能夠不寫】(編譯、測試、運行都有效)
servlet-api、jsp-api -- provided(編譯、測試有效,運行時無效防止和 tomcat 下 jar 衝突)
jdbc 驅動 jar 包 -- runtime(測試、運行有效)
junit --- test(測試有效)
依賴範圍由強到弱的順序是: compile > provided > runtime > test複製代碼
在項目中添加依賴範圍:
package com.actadd.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @ClassName ServletDemo
* @Description 在 maven 工程中建立一個 ServletDemo
* @Author Actadd
* @Date 21:18 2019/12/15
* @Version 1.0
*/
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//跳到 hello.jsp 資源
req.getRequestDispatcher("/hello.jsp").forward(req, resp);
}
}
複製代碼
pom.xml 中添加 tomcat 插件
接下來在運行按鈕添加 tomcat 運行配置:
添加 tomcat
右鍵運行