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目錄中
設定本機存放資源的目錄位置(設定本機倉庫):
- 修改maven的配置檔案, maven安裝目錄/conf/settings.xml先備份 settings.xml
-
修改 指定你的目錄(不要使用中文目錄)
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課程中會用到這個作用
- 預設沒有使用resources的時候, maven執行編譯代碼時, 會把src/main/resource目錄中的檔案拷貝到target/classes目錄中。