1. 程式人生 > 其它 >2021-2022-1 20211412 《資訊保安專業導論》第4周學習總

2021-2022-1 20211412 《資訊保安專業導論》第4周學習總

maven

maven是一個構建專案的工具。

1.maven作用

1.可以管理jar檔案

2.自動下載jar和他的文件,原始碼

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

4.管理你需要的jar版本

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

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構建專案:清理,編譯,測試,打包,安裝,部署 過程(階段)

compiletestprovided
對主程式是否有效
對測試程式是否有效
是否參與打包
是否參與部署

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>