天天看點

Maven學習筆記,動力節點maven教程随堂筆記

Maven筆記

  • 這篇筆記的學習視訊來自b站動力節點

https://www.bilibili.com/video/BV1dp4y1Q7Hf

第一部分

1、完成一個java項目,需要做哪些工作?

1.分析項目要做什麼,知道項目有哪些組成部分。

2.設計項目,通過哪些步驟,使用哪些技術。需要多少人, 多長的時間。

3.組建團隊,招人, 購置裝置,伺服器, 軟體, 筆記本。

4.開發人員寫代碼。 開發人員需要測試自己寫代碼。 重複多次的工作。

5.測試人員,測試項目功能是否符合要求。

測試開發人員送出代碼-如果測試有問題--需要開發人員修改--在送出代碼給測試--測試人員在測試代碼-如果還有問題-在交給開發人員-開發人員在送出-在測試直到-測試代碼通過。

2、傳統開發項目的問題,沒有使用maven【meivn】管理的項目

1)很多子產品,子產品之間有關系, 手工管理關系,比較繁瑣。

2)需要很多第三方功能, 需要很多jar檔案,需要手工從網絡中擷取各個jar

3)需要管理jar的版本, 你需要的是mysql.5.1.5.jar 拿你不能給給一個mysql.4.0.jar

4)管理jar檔案之間的依賴, 你的項目要使用a.jar 需要使用b.jar裡面的類。

  • 必須首先擷取到b.jar才可以, 然後才能使用a.jar.
  • jar需要b.jar這個關系叫做依賴,或者你的項目中要使用mysql的驅動,也可以叫做項目依賴mysql驅動。
  • class使用b.class, a依賴b類

3、需要改進項目的開發和管理,需要maven

1)maven可以管理jar檔案

2)自動下載下傳jar和他的文檔,源代碼

3)管理jar直接的依賴, a.jar需要b.jar , maven會自動下載下傳b.jar

4)管理你需要的jar版本

5)幫你編譯程式,把java編譯為class

6)幫你測試你的代碼是否正确。

7)幫你打封包件,形成jar檔案,或者war檔案

8)幫你部署項目

4、建構: 項目的建構。

建構是面向過程的,就是一些步驟,完成項目代碼的編譯,測試,運作,打包,部署等等。

maven支援的建構包括有:

1.清理, 把之前項目編譯的東西删除掉,我新的編譯代碼做準備。

2.編譯, 把程式源代碼編譯為執行代碼, java-class檔案批量的,maven可以同時把成千上百的檔案編譯為class。javac 不一樣,javac一次編譯一個檔案。

3.測試, maven可以執行測試程式代碼,驗證你的功能是否正确。批量的,maven同時執行多個測試代碼,同時測試很多功能。

4.報告, 生成測試結果的檔案, 測試通過沒有。

5.打包, 把你的項目中所有的class檔案,配置檔案等所有資源放到一個壓縮檔案中。

這個壓縮檔案就是項目的結果檔案, 通常java程式,壓縮檔案是jar擴充名的。

對于web應用,壓縮檔案擴充名是.war

6.安裝, 把5中生成的檔案jar,war安裝到本機倉庫

7.部署, 把程式安裝好可以執行。

5、maven核心概念: 用好maven,了解這些概念

①POM : 一個檔案 名稱是pom.xml , pom翻譯過來叫做項目對象模型。

maven把一個項目當做一個模型使用。控制maven建構項目的過程,管理jar依賴。

②約定的目錄結構 : maven項目的目錄和檔案的位置都是規定的。

③坐标 : 是一個唯一的字元串,用來表示資源的。

④依賴管理 : 管理你的項目可以使用jar檔案

⑤倉庫管理(了解) :你的資源存放的位置

⑥生命周期 (了解) : maven工具建構項目的過程,就是生命周期。

⑦插件和目标(了解):執行maven建構的時候用的工具是插件

⑧繼承

⑨聚合

講maven的使用,先難後易的。 難是說使用maven的指令,完成maven使用 , 在idea中直接使用maven,代替指令。

6、maven工具的安裝和配置。

1)需要從maven的官網下載下傳maven的安裝包 apache-maven-3.3.9-bin.zip

2)解壓安裝包,解壓到一個目錄,非中文目錄。

  • 子目錄 bin :執行程式,主要是mvn.cmd
  • conf :maven工具本身的配置檔案 settings.xml

3)配置環境變量

在系統的環境變量中,指定一個M2_HOME的名稱, 指定它的值是maven工具安裝目錄,bin之前的目錄

M2_HOME=D:\work\maven_work\apache-maven-3.3.9
           

再把M2_HOME加入到path之中,在所有路徑之前加入 %M2_HOME%\bin;

4)驗證,新的指令行中,執行mvn -v

注意:需要配置JAVA_HOME ,指定jdk路徑

C:\Users\Administrator>mvn -v
 出現如下内容,maven安裝,配置正确。
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:4
Maven home: D:\work\maven_work\apache-maven-3.3.9
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: C:\java\JDK8-64\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
           

第二部分

1、maven約定的目錄結構, 約定是大家都遵循的一個規則。

每一個maven項目在磁盤中都是一個檔案夾(項目-Hello)

Hello/
  ---/src
  ------/main           #放你主程式java代碼和配置檔案
  ----------/java       #你的程式包和包中的java檔案
  ----------/resources  #你的java程式中要使用的配置檔案

  ------/test  #放測試程式代碼和檔案的(可以沒有)
  ----------/java       #測試程式包和包中的java檔案
  ----------/resources  #測試java程式中要使用的配置檔案

  ---/pom.xml  #maven的核心檔案(maven項目必須有)
           

2、疑問: mvn compile 編譯src/main目錄下的所有java檔案的.

1)為什麼要下載下傳?

maven工具執行的操作需要很多插件(java類--jar檔案)完成的

2)下載下傳什麼東西了?

jar檔案--叫做插件--插件是完成某些功能

3)下載下傳的東西存放到哪裡了。

預設倉庫(本機倉庫):

C:\Users\(登入作業系統的使用者名)Administrator.m2\repository

Downloading:

https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom

https://repo.maven.apache.org :中央倉庫的位址

執行mvn compile, 結果是在項目的根目錄下生成target目錄(結果目錄),maven編譯的java程式,最後的class檔案都放在target目錄中

設定本機存放資源的目錄位置(設定本機倉庫):

  1. 修改maven的配置檔案, maven安裝目錄/conf/settings.xml先備份 settings.xml
  2. 修改 指定你的目錄(不要使用中文目錄)

    D:\work\maven_work\maven_repository

3、倉庫

1)倉庫是什麼: 倉庫是存放東西的, 存放maven使用的jar 和 我們項目使用的jar

> maven使用的插件(各種jar)

> 我項目使用的jar(第三方的工具)

2)倉庫的分類

>本地倉庫, 就是你的個人計算機上的檔案夾,存放各種jar

>遠端倉庫, 在網際網路上的,使用網絡才能使用的倉庫

①:中央倉庫,最權威的, 所有的開發人員都共享使用的一個集中的倉庫,

②:中央倉庫的鏡像:就是中央倉庫的備份, 在各大洲,重要的城市都是鏡像。

③:私服,在公司内部,在區域網路中使用的, 不是對外使用的。

3)倉庫的使用,maven倉庫的使用不需要人為參與。

開發人員需要使用mysql驅動--->maven首先查本地倉庫--->私服--->鏡像--->中央倉庫
           

4、pom:項目對象模型,是一個pom.xml檔案

1)坐标:唯一值, 在網際網路中唯一辨別一個項目的

< groupId>公司域名的倒寫

< artifactId>自定義項目名稱

< version>自定版本号

https://mvnrepository.com/ 搜尋使用的中央倉庫, 使用groupId 或者 artifactId作為搜尋條件

2) packaging: 打包後壓縮檔案的擴充名,預設是jar ,web應用是war

packaging 可以不寫, 預設是jar

3 ) 依賴

dependencies 和dependency ,相當于是 java代碼中import

你的項目中要使用的各種資源說明, 比我的項目要使用mysql驅動

<dependencies>
		<!--依賴  java代碼中 import -->
	  <dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.9</version>
	 </dependency>
 
 </dependencies>
           

4)properties:設定屬性

5)build : maven在進行項目的建構時, 配置資訊,例如指定編譯java代碼使用的jdk的版本等

5、maven生命周期, maven的指令,maven的插件

  • maven的生命周期:就是maven建構項目的過程,清理,編譯,測試,報告,打包,安裝,部署
  • maven的指令:maven獨立使用,通過指令,完成maven的生命周期的執行。

    maven可以使用指令,完成項目的清理,編譯,測試等等

  • maven的插件: maven指令執行時,真正完成功能的是插件,插件就是一些jar檔案, 一些類。

1)單元測試(測試方法):用的是junit, junit是一個專門測試的架構(工具)。

junit測試的内容: 測試的是類中的方法, 每一個方法都是獨立測試的。

方法是測試的基本機關(單元)。

maven借助單元測試,批量的測試你類中的大量方法是否符合預期的。

2)使用步驟

1.加入依賴,在pom.xml加入單元測試依賴

<!-- 單元測試 -->
	 <dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
		<scope>test</scope>
	</dependency>
           

2.在maven項目中的src/test/java目錄下,建立測試程式。

推薦的建立類和方法的提示:

1.測試類的名稱 是Test + 你要測試的類名

2.測試的方法名稱 是:Test + 方法名稱

例如你要測試HelloMaven ,
	 建立測試類 TestHelloMaven
   @Test
	 public void testAdd(){
      測試HelloMaven的add方法是否正确
	 }
           

其中testAdd叫做測試方法,它的定義規則

1.方法是public的,必須的

2.方法沒有傳回值, 必須的

3.方法名稱是自定義的,推薦是Test + 方法名稱

4.在方法的上面加入 @Test

3) mvn compile

編譯main/java/目錄下的java 為class檔案, 同時把class拷貝到 target/classes目錄下面,把main/resources目錄下的所有檔案 都拷貝到target/classes目錄下

第三部分

1、在idea中設定maven ,讓idea和maven結合使用。

idea中内置了maven ,一般不使用内置的, 因為用内置修改maven的設定不友善。

使用自己安裝的maven, 需要覆寫idea中的預設的設定。讓idea指定maven安裝位置等資訊

配置的入口

①:配置目前工程的設定, file--settings ---Build, Excution,Deployment--Build Tools

--Maven 
					   Maven Home directory: maven的安裝目錄
						User Settings File :  就是maven安裝目錄conf/setting.xml配置檔案
						Local Repository :    本機倉庫的目錄位置

				   --Build Tools--Maven--Runner  
					  VM Options : archetypeCatalog=internal
					  JRE: 你項目的jdk


                archetypeCatalog=internal , maven項目建立時,會聯網下載下傳模版檔案,
					  比較大, 使用-DarchetypeCatalog=internal,不用下載下傳, 建立maven項目速度快。
           

②:配置以後建立工程的設定, file--other settings--Settings for New Project

2、使用模版建立項目

1)maven-archetype-quickstart : 普通的java項目

2)maven-archetype-webapp : web工程

第四部分

1、依賴範圍, 使用scope表示的。

scope的值有 compile, test, provided ,預設是compile

scope:表示依賴使用的範圍,也就是在maven建構項目的那些階段中起作用。

maven建構項目 編譯, 測試 ,打包, 安裝 ,部署 過程(階段)

junit的依賴範圍是 test

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>a</groupId>
  <artifactId>b</artifactId>   b.jar
  <version>4.11</version>
</dependency>


 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>          servlet.jar
  <scope>provided</scope> 提供者
</dependency>
           
  • 你在寫項目的中的用到的所有依賴(jar ) ,必須在本地倉庫中有。
  • 沒有必須通過maven下載下傳, 包括provided的都必須下載下傳。
  • 你在servlet需要繼承HttpServlet( provided) , 你使用的HttpServlet是maven倉庫中的。
  • 當你的寫好的程式, 放到 tomat伺服器中運作時, 此時你的程式中不包含servlet的jar
  • 因為tomcat提供了 servlet的.jar

第五部分

maven常用操作

1.maven的屬性設定

設定maven的常用屬性

2.maven的全局變量

自定義的屬性“”

1.在

通過自定義标簽聲明變量(标簽名就是變量名)

2.在pom.xml檔案中的其它位置,使用 ${标簽名} 使用變量的值

自定義全局變量一般是定義 依賴的版本号, 當你的項目中要使用多個相同的版本号,先使用全局變量定義, 在使用${變量名}

3.資源插件

<build>
	<resources>
	<resource>
	<directory>src/main/java</directory><!--所在的目錄-->
	<includes><!--包括目錄下的.properties,.xml 檔案都會掃描到-->
	<include>**/*.properties</include>
	<include>**/*.xml</include>
	</includes>
	<!—filtering 選項 false 不啟用過濾器, *.property 已經起到過濾的作用了 -->
	<filtering>false</filtering>
	</resource>
	</resources>
  </build>
           

作用: mybatis課程中會用到這個作用

  1. 預設沒有使用resources的時候, maven執行編譯代碼時, 會把src/main/resource目錄中的檔案拷貝到target/classes目錄中。