docker 應用篇————docker 網路[十七]
阿新 • • 發佈:2021-08-05
maven學習筆記
一.maven簡介:
maven是一個專案管理工具
傳統開發過程中的問題:
傳統開發專案的問題,沒有使用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. a.jar需要b.jar這個關係叫做依賴, 或者你的專案中要使用mysql的驅動, 也可以叫做專案依賴mysql驅動。 a.class使用b.class, a依賴b類
maven可以做什麼:
需要改進專案的開發和管理,需要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)幫你部署專案
構建:
構建是面向過程的,就是一些步驟,完成專案程式碼的編譯,測試,執行,打包,部署等等。 maven支援的構建包括有: 1.清理, 把之前專案編譯的東西刪除掉,我新的編譯程式碼做準備。 2.編譯, 把程式原始碼編譯為執行程式碼, java-class檔案 批量的,maven可以同時把成千上百的檔案編譯為class。 javac 不一樣,javac一次編譯一個檔案。 3.測試, maven可以執行測試程式程式碼,驗證你的功能是否正確。 批量的,maven同時執行多個測試程式碼,同時測試很多功能。 4.報告, 生成測試結果的檔案, 測試通過沒有。 5.打包, 把你的專案中所有的class檔案,配置檔案等所有資源放到一個壓縮檔案中。 這個壓縮檔案就是專案的結果檔案, 通常java程式,壓縮檔案是jar副檔名的。 對於web應用,壓縮副檔名是.war 6.安裝, 把5中生成的檔案jar,war安裝到本機倉庫 7.部署, 把程式安裝好可以執行。
maven的核心概念:
①POM : 一個檔案 名稱是pom.xml , pom翻譯過來叫做專案物件模型。
maven把一個專案當做一個模型使用。控制maven構建專案的過程,管理jar依賴。
②約定的目錄結構 : maven專案的目錄和檔案的位置都是規定的。
③座標 : 是一個唯一的字串,用來表示資源的。
④依賴管理 : 管理你的專案可以使用jar檔案
⑤倉庫管理(瞭解) :你的資源存放的位置
⑥生命週期 (瞭解) : maven工具構建專案的過程,就是生命週期。
⑦外掛和目標(瞭解):執行maven構建的時候用的工具是外掛
⑧繼承
⑨聚合
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"
二.maven的核心概念:
約定的目錄結構:
每一個maven專案在磁碟中都是一個資料夾(專案-Hello)
Hello/
---/src
------/main #放你主程式java程式碼和配置檔案
----------/java #你的程式包和包中的java檔案
----------/resources #你的java程式中要使用的配置檔案
------/test #放測試程式程式碼和檔案的(可以沒有)
----------/java #測試程式包和包中的java檔案
----------/resources #測試java程式中要使用的配置檔案
---/pom.xml #maven的核心檔案(maven專案必須有)
首次配置maven下載:
預設倉庫(本機倉庫):
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. 修改 <localRepository> 指定你的目錄(不要使用中文目錄)
D:\work\maven_work\maven_repository(注意:在setting。xml檔案中需要將斜槓改為"/")
倉庫概念:
1)倉庫是什麼: 倉庫是存放東西的, 存放maven使用的jar 和 我們專案使用的jar
> maven使用的外掛(各種jar)
> 我專案使用的jar(第三方的工具)
2)倉庫的分類
>本地倉庫, 就是你的個人計算機上的資料夾,存放各種jar
>遠端倉庫, 在網際網路上的,使用網路才能使用的倉庫
①:中央倉庫,最權威的, 所有的開發人員都共享使用的一個集中的倉庫,
https://repo.maven.apache.org :中央倉庫的地址
②:中央倉庫的映象:就是中央倉庫的備份, 在各大洲,重要的城市都是映象。
③:私服,在公司內部,在區域網中使用的, 不是對外使用的。
3)倉庫的使用,maven倉庫的使用不需要人為參與。
開發人員需要使用mysql驅動--->maven首先查本地倉庫--->私服--->映象--->中央倉庫
pom檔案分析:
groupId + artifactId + version = 座標(唯一標識)
https://mvnrepository.com/ 搜尋使用的中央倉庫, 使用groupId 或者 artifactId作為搜尋條件
示例:
<groupId>com.bjpowernode</groupId>
<artifactId>ch07-ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--servlet依賴-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory><!--所在的目錄-->
<includes><!--包括目錄下的.properties,.xml 檔案都會掃描到-->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
maven的生命週期:
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目錄下
打包成壓縮檔案只會打包src/java中的檔案,不會打包test資料夾裡的
三.maven在IDEA中的應用:
idea中內建了maven ,一般不使用內建的, 因為用內建修改maven的設定不方便。
使用自己安裝的maven, 需要覆蓋idea中的預設的設定。讓idea指定maven安裝位置等資訊
兩個設定入口:
如何配置使用自己的maven
然後再點選maven下的runner設定:archertypeCatalog=internal
原因:maven專案建立時,會聯網下載模版檔案,比較大, 使用 -DarchetypeCatalog=internal,不用下載, 建立maven專案速度快。
i
IDEA建立javase專案:
下一步之後填寫座標資訊:
注意:如果沒有resource資料夾需要自己建立,然後右鍵 選擇makeDirectoryAs -Resource root
建立web專案:
具體配置見springMvc
將現存專案匯入到IDEA:
小tips:對於匯入的依賴maven無法識別,可以右鍵選擇pom.xml檔案選擇maven再選擇reImport,或者點選右側maven小視窗的重新整理
四.依賴範圍:
依賴範圍, 使用scope表示的。
scope的值有 compile, test, provided ,預設是compile
scope:表示依賴使用的範圍,也就是在maven構建專案的那些階段中起作用。
maven構建專案 編譯, 測試 ,打包, 安裝 ,部署 過程(階段)
你在寫專案的中的用到的所有依賴(jar ) ,必須在本地倉庫中有。
沒有必須通過maven下載, 包括provided的都必須下載。
你在servlet需要繼承HttpServlet( provided) , 你使用的HttpServlet是maven倉庫中的。
當你的寫好的程式, 放到 tomat伺服器中執行時, 此時你的程式中不包含servlet的jar
因為tomcat提供了 servlet的.jar
五.maven常用操作:
maven常用操作
1.maven的屬性設定
<properties> 設定maven的常用屬性
2.maven的全域性變數
自定義的屬性,1.在<properties> 通過自定義標籤宣告變數(標籤名就是變數名)
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目錄中。