javaEE學習筆記————maven基礎總結!!

1.maven介紹

1.1 什麼是maven

1.1.1 定義

Maven 在美國是一個口語化的詞語,代表專家、內行的意思
一個對 Maven 比較正式的定義是這麼說的:Maven 是一個項目管理工具,它包含了一個項目對象模
型 (POM:Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管
理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)

1.1.2 maven可以解決的問題

我們來簡單的舉幾個例子:
1 .平時不管寫什麼項目都免不了要導入各種的jar包,有了maven就可以幫你自動的導入
2 .平時檢測某個功能都會用到單元測試,但是當有很多的功能的時候你還要一個個的去測試嗎?顯然浪費時間,maven就可以幫你集中的測試
3 .maven中有一個pom.xml的配置文件可以將所有的配置都寫到這一個文件中,方便進行管理
4.如果一個項目很大的話,將會導致集中的依賴包也會很多,最終會導致整個項目過於龐大,而用了maven可以極大地縮小項目的體積
5.其他

1.1.3 Maven 的優勢舉例

在前面學習到的web項目開發的過程中,要能夠將項目運行起來,就必須將該項目所依賴的一些 jar 包添加到
工程中,否則項目就不能運行。試想如果具有相同架構的項目有十個,那麼我們就需要將這一份 jar
包複製到十個不同的工程中。我們一起來看一個 CRM項目的工程大小。
使用傳統 Web 項目構建的 CRM 項目如下:

在這裏插入圖片描述

	原因主要是因爲上面的 WEB 程序要運行,我們必須將項目運行所需的 Jar 包複製到工程目錄中,從
	而導致了工程很大。
	同樣的項目,如果我們使用 Maven 工程來構建,會發現總體上工程的大小會少很多。如下圖:

在這裏插入圖片描述

1.2 Maven 的兩個精典作用

1.2.1 依賴管理

Maven 的一個核心特性就是依賴管理。當我們涉及到多模塊的項目(包含成百個模塊或者子項目),管理依賴就變成
一項困難的任務。Maven 展示出了它對處理這種情形的高度控制。

在這裏插入圖片描述

	通過分析發現:maven 工程中不直接將 jar 包導入到工程中,而是通過在 pom.xml 文件中添加所需 jar
	包的座標,這樣就很好的避免了 jar 直接引入進來,在需要用到 jar 包的時候,只要查找 pom.xml 文
	件,再通過 pom.xml 文件中的座標,到一個專門用於”存放 jar 包的倉庫”(maven 倉庫)中根據座標從
	而找到這些 jar 包,再把這些 jar 包拿去運行。
	那麼問題來了
	第一:”存放 jar 包的倉庫”長什麼樣?
	第二:通過讀取 pom.xml 文件中的座標,再到倉庫中找到 jar 包,會不會很慢?從而導致這種方式
	不可行!
	
	第一個問題:存放 jar 包的倉庫長什麼樣,這一點我們後期會分析倉庫的分類,也會帶大家去看我們
	的本地的倉庫長什麼樣。
	第二個問題:通過 pom.xml 文件配置要引入的 jar 包的座標,再讀取座標併到倉庫中加載 jar 包,這
	樣我們就可以直接使用 jar 包了,爲了解決這個過程中速度慢的問題,maven 中也有索引的概念,通
	過建立索引,可以大大提高加載 jar 包的速度,使得我們認爲 jar 包基本跟放在本地的工程文件中再
	讀取出來的速度是一樣的。這個過程就好比我們查閱字典時,爲了能夠加快查找到內容,書前面的
	目錄就好比是索引,有了這個目錄我們就可以方便找到內容了,一樣的在 maven 倉庫中有了索引我
	們就可以認爲可以快速找到 jar 包。

1.2.2 項目的一鍵構建

	我們的項目,往往都要經歷編譯、測試、運行、打包、安裝 ,部署等一系列過程。
	什麼是構建?
	指的是項目從編譯、測試、運行、打包、安裝 ,部署整個過程都交給 maven 進行管理,這個
	過程稱爲構建。
	一鍵構建
	指的是整個構建過程,使用 maven 一個命令可以輕鬆完成整個工作。

Maven 規範化構建流程如下:

在這裏插入圖片描述

2.maven的使用

2.1 maven的安裝

2.1.1 Maven 軟件的下載

大家可以直接去官網下載:

maven官網
在這裏插入圖片描述

2.1.2 Maven 軟件的安裝

將下載好的壓縮包解壓到沒有中文和空格的路徑下:(我直接解壓到了G盤的根目錄)

在這裏插入圖片描述

解壓好的文件目錄如下:

在這裏插入圖片描述

bin:存放了 maven 的命令,比如我們前面用到的 mvn tomcat:run
boot:存放了一些 maven 本身的引導程序,如類加載器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身運行所需的一些 jar 包
至此我們的 maven 軟件就可以使用了,前提是你的電腦上之前已經安裝並配置好了 JDK。

2.1.3 jdk的準備

我使用的jdk8,一般學習java的都有的我就不多說了.有問題私聊

2.1.4 Maven 及 JDK 配置

配置 MAVEN_HOME ,變量值就是你的 maven 安裝 的路徑(bin 目錄之前一級目錄)

在這裏插入圖片描述

	配置path:%MAVEN_HOME%\bin

在這裏插入圖片描述

2.1.5 Maven 軟件版本測試

打開cmd運行mvn -v

在這裏插入圖片描述

2.2 maven倉庫

2.2.1 Maven 倉庫的分類

maven 中倉庫的類型:

在這裏插入圖片描述

本地倉庫 :用來存儲從遠程倉庫或中央倉庫下載的插件和 jar 包,項目使用一些插件或 jar 包,
優先從本地倉庫查找
默認本地倉庫位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用戶目錄。	

我的maven倉庫:(我放到了maven裏面,方面以後拿走用)

下面的那個del_lsatupdate.bat是用來刪除後綴爲lastupdate 的文件的,一般遇到這種情況都是下載依賴失敗的

在這裏插入圖片描述

遠程倉庫:如果本地需要插件或者 jar 包,本地倉庫沒有,默認去遠程倉庫下載。
遠程倉庫可以在互聯網內也可以在局域網內。

中央倉庫 :在 maven 軟件中內置一個遠程倉庫地址 http://repo1.maven.org/maven2 ,它是中
央倉庫,服務於整個互聯網,它是由 Maven 團隊自己維護,裏面存儲了非常全的 jar 包,它包
含了世界上大部分流行的開源項目構件。

2.2.2 Maven 本地倉庫的配置

找到maven目錄下的conf目錄下的setting.xml

在這裏插入圖片描述
在紅色方框的位置寫上你自己的倉庫目錄
在這裏插入圖片描述

2.3 maven工程的認識

2.3.1 Maven 工程的目錄結構

在這裏插入圖片描述

作爲一個 maven 工程,它的 src 目錄和 pom.xml 是必備的。
進入 src 目錄後,我們發現它裏面的目錄結構如下:

在這裏插入圖片描述

src/main/java —— 存放項目的.java 文件
src/main/resources —— 存放項目資源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有單元測試.java 文件,如 JUnit 測試類
src/test/resources —— 測試資源文件
target —— 項目輸出位置,編譯後的 class 文件會輸出到此目錄
pom.xml——maven 項目核心配置文件
注意:如果是普通的 java 項目,那麼就沒有 webapp 目錄。

2.3.2 Maven 工程的運行

進入 maven 工程目錄(當前目錄有 pom.xml 文件),運行 tomcat:run 命令。

在這裏插入圖片描述
根據上邊的提示信息,通過瀏覽器訪問:http://localhost:8080/maven-web003/
在這裏插入圖片描述

2.3.3 maven下的ali鏡像配置

網上有各種各樣樣的版本,我也試了很多個,我現在用的這個:
找到setting.xml:在mirros下輸入以下的內容
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/repositories/central</url>
	</mirror>

在這裏插入圖片描述

3. maven 的項目實踐

3.1 maven常用命令

 compile:查看 target 目錄,生成class 文件,編譯。
 test :maven 工程的測試命令 mvn test,會執行 src/test/java 下的單元測試類
 clean :maven 工程的清理命令,執行 clean 會刪除 target 目錄及內容。
 package :maven 工程的打包命令,對於 java 工程執行 package 打成 jar 包,對於 web 工程打成 war包。
 install : maven 工程的安裝命令,執行 install 將 maven 打成 jar 包或 war 包發佈到本地倉庫。

3.2 maven 指令的生命週期

maven 對項目構建過程分爲三套相互獨立的生命週期,請注意這裏說的是“三套”,而且“相互獨立”,
這三套生命週期分別是:

在這裏插入圖片描述

Clean Lifecycle 在進行真正的構建之前進行一些清理工作。
Default Lifecycle 構建的核心部分,編譯,測試,打包,部署等等。
Site Lifecycle 生成項目報告,站點,發佈站點。	

3.3 maven 的概念模型

Maven 包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project 
Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段
(phase)中插件(plugin)目標(goal)的邏輯。

在這裏插入圖片描述

3.4 idea開發的maven項目

3.4.1 idea的maven配置

在這裏插入圖片描述

3.4.2 idea 中創建一個 maven 的 web 工程

點擊create new project
在這裏插入圖片描述
選擇 idea 提供好的 maven 的web 工程模板
在這裏插入圖片描述
點擊next
在這裏插入圖片描述
點擊next
在這裏插入圖片描述
直接next

在這裏插入圖片描述

點擊finsh

3.4.3 idea中具體的操作

首先大家新建如下的文件夾,具體的包的名稱,大家按照自己的來

在這裏插入圖片描述
在新建一個servlert 的過程中大家沒有辦法通過單擊右鍵找到servlet,我們需要導入依賴

	<dependency>
	      <groupId>javax.servlet</groupId>
	      <artifactId>servlet-api</artifactId>
	      <version>2.5</version>
	      <scope>provided</scope>
	    </dependency>
	    <dependency>
	      <groupId>javax.servlet.jsp</groupId>
	      <artifactId>jsp-api</artifactId>
	      <version>2.0</version>
	      <scope>provided</scope>
		</dependency>
		<dependency>
		      <groupId>junit</groupId>
		      <artifactId>junit</artifactId>
		      <version>4.12</version>
		      <scope>test</scope>
    	</dependency>

然後就可以創建一個servlet 文件,至於servlet 的配置大家自己配置好

3.4.4 設置jdk 的版本

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <target>1.8</target>
      <source>1.8</source>
      <encoding>UTF-8</encoding>
    </configuration>
  </plugin>

3.4.5 添加servlet7插件

  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <port>8080</port>
    </configuration>
  </plugin>

3.4.6 編寫servlet

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("hello.jsp").forward(request,response);
    }
}

3.4.7 編寫servlet

<%--
  Created by IntelliJ IDEA.
  User: Belief
  Date: 2020/6/11
  Time: 11:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
hello maven
</body>
</html>

3.4.8 運行

在這裏插入圖片描述
運行tomcat7:run
在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章