2021-2022-1 20211412 《資訊保安專業導論》第4周學習總
maven是一個構建專案的工具。
1.maven作用
1.可以管理jar檔案
2.自動下載jar和他的文件,原始碼
3.管理jar直接的依賴,a.jar需要b.jar,maven會自動下載b.jar
4.管理你需要的jar版本
6.幫你測試你的程式碼是否正確
7.幫你打包檔案,形成jar檔案或者war檔案
8.幫你部署專案。
maven的構建:
構建(build),是面向過程的(從開始到結尾的多個步驟),涉及到多個環節的協同工作。
構建過程的幾個主要環節
①清理:刪除以前的編譯結果,為重新編譯做好準備。
②編譯:將Java源程式編譯為位元組碼檔案。maven可以同時把成百上千的檔案編譯成java-class檔案,和javac不一樣,javac一次只能編譯一個檔案。
③測試:針對專案中的關鍵點進行測試,確保專案在迭代開發過程中關鍵點的正確性。可以同時執行多個測試程式碼,同時測試多個功能。
④報告:在每一次測試後以標準的格式記錄和展示測試結果。
⑤打包:將一個包含諸多檔案的工程封裝為一個壓縮檔案用於安裝或部署。Java 工程對應 jar 包,Web 工程對應war包。
⑥安裝:在Maven環境下特指將打包的結果——jar包或war包安裝到本地倉庫中。
⑦部署:將打包的結果部署到遠端倉庫或將war包部署到伺服器上執行
Maven核心概念
1.POM:一個檔案 名稱是pom.xml。pom翻譯過來是專案物件模型。maven把一個專案當做是一個模型使用。可以控制maven構建專案的過程,管理jar依賴。
2.約定的目錄結構:maven專案的目錄和檔案的位置都是規定的
3.座標:是一個唯一的字串,用來表示資源的
4.依賴管理:管理你的專案可以使用jar檔案
5.倉庫管理:資源存放的位置
6.生命週期:maven工具構建專案的過程,就是生命週期
7.外掛和目標:執行maven構建的時候用的工具是外掛。
8.繼承
9.聚合
倉庫
倉庫是存放東西的,存放maven使用的jar和我們專案使用的jar
包括:maven使用的外掛(各種jar),自己專案中使用的jar(第三方的工具)
倉庫分類:
本地倉庫:即個人計算機上的資料夾,存放各種jar
遠端倉庫:在網際網路上,使用網路才能使用的倉庫
1.中央倉庫:最權威的,所有開發人員都共享使用的一個集中地倉庫。
https://repo.maven.apache.org:中央倉庫的地址
2.中央倉庫的映象:就是中央倉庫的備份,在各大洲,重要的城市都有映象。
3.私服:在公司內部,在區域網中使用的,不對外使用。
maven倉庫的使用不需要人為參與
POM檔案
即 Project Object Model 專案物件模型。Maven 把一個專案的結構和內容抽象成一個模型,在 xml 檔案中 進行宣告,以方便進行構建和描述,pom.xml 是 Maven 的靈魂。所以,maven 環境搭建好之後,所有的學習和 操作都是關於 pom.xml 的。
pom.xml的基本資訊:
座標(gav):唯一值,在網際網路中唯一標識一個專案的。
<artifactId>公司域名的倒寫</artifactId>
<groupId>自定義專案名稱</groupId>
<version>自定義版本號</version>
modelVersion:Maven模型的版本,對於Maven2和Maven3來說,他只能是4.0.0
groupId:組織id,一般是公司的域名的倒寫
artifactId:專案名稱,也是模組名稱,對應groupId中專案中的子專案
version:專案的版本號,如果專案還在開發中,是不穩定版本,通常在版本後帶-SNAPSHOT,version使用三位數字標識,例如1.1.0
packaging:專案打包的型別,可以使用jar、var、rar、ear、pom,預設是jar
https://mvnrepository.com/搜尋使用的中央倉庫,使用groupId或者artifactId作為搜尋條件。
依賴:dependencies和dependency,專案中要使用的各種資源說明,相當於Java中的import
配置屬性:properties,properties 是 用 來 定 義 一 些 配 置 屬 性 的 , 例 如 project.build.sourceEncoding(專案構建原始碼編碼方式),可以設定為 UTF-8,防止中文亂碼,也可定義相關構建版本號,便於日後統一升級。
構建:build,build表示與構建相關的配置,例如設定編譯外掛的jdk版本
繼承:parent,在 Maven 中,如果多個模組都需要宣告相同的配置,例如:groupId、 version、有相同的依賴、或者相同的元件配置等,也有類似 Java 的繼承機 制,用 parent 宣告要繼承的父工程的 pom 配置。
聚合:modules:在 Maven 的多模組開發中,為了統一構建整個專案的所有模組,可以提供一 個額外的模組,該模組打包方式為 pom,並且在其中使用 modules 聚合的 其它模組,這樣通過本模組就可以一鍵自動識別模組間的依賴關係來構建所有 模組,叫 Maven 的聚合。
maven的生命週期,maven的命令,maven的外掛
maven的生命週期:就是maven構建專案的過程:清理,編譯,測試,報告,打包,安裝,部署。
Maven的命令:maven獨立使用,通過命令,完成Maven的生命週期的執行,maven可以通過命令完成專案的清理,編譯,測試等等。
maven的外掛:maven命令執行時,真正完成功能的是外掛,外掛就是一些jar檔案,一些類。
junit
junit是一個專門測試的框架(工具),
junit測試的內容:測試的是類中的方法,每一個方法都是獨立測試的,方法是測試的基本單位(單元)。
maven藉助單元測試,批量的測試你類中的大量方法是否符合預期。
外掛
外掛可以在自己的專案中設定,最常使用的是 maven 編譯外掛。設定專案使用的 jdk 版本時通過編譯外掛指定。
pom.xml 檔案<build>中設定。
<build>
<!--配置外掛-->
<plugins>
<!--配置具體的外掛-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<!--外掛的名稱-->
<artifactId>maven-compiler-plugin</artifactId>
<!--外掛的版本-->
<version>3.8.1</version>
<!--配置外掛的資訊-->
<configuration>
<!--告訴maven,我們寫的程式碼是在jdk1.8上編譯的-->
<source>1.8</source>
<!--我們的程式應該執行在1.8的jdk上-->
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
在idea中配置maven
1.idea中內建了idea,但是一般不使用內建的mave,因為用內建的maven的設定不方便。所以使用自己安裝的maven。
依賴
1.依賴範圍,使用scope表示
scope的值有 compile,test,provided,預設是compile0
scope:表示依賴使用的範圍,也就是在maven構建專案的哪些階段中起作用,、
maven構建專案:清理,編譯,測試,打包,安裝,部署 過程(階段)
compile | test | provided | |
---|---|---|---|
對主程式是否有效 | 是 | 否 | 是 |
對測試程式是否有效 | 是 | 是 | 是 |
是否參與打包 | 是 | 否 | 否 |
是否參與部署 | 是 | 否 | 否 |
maven常用屬性
<properties>
<!--maven構建專案使用的編碼,避免中文亂碼-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--編譯程式碼使用的jdk版本-->
<maven.compiler.source>1.7</maven.compiler.source>
<!--執行程式使用的jdk版本-->
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
全域性變數
在 Maven 的 pom.xml 檔案中,<properties>用於定義全域性變數,POM 中通過${property_name}的形式引用變數的值。
定義全域性變數:
<properties>
<spring.version>4.3.10.RELEASE</spring.version>
</properties>
引用全域性變數:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
指定資源位置
src/main/java 和 src/test/java 這兩個目錄中的所有*.java 檔案會分別在 compile 和 test-compile 階段被編譯,編譯結果分別放到了 target/classes 和 targe/test-classes 目錄中,但是這兩個目錄中的其他檔案都會被忽略掉,如果需要把 src 目錄下的檔案包放到 target/classes 目錄,作為輸出的 jar 一部分。需要指定資原始檔位置。以下內容放到<build>標籤中。
<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>