Maven使用方法詳及方式詳細介紹
Maven簡介
1、軟件開發中的階段
需要分析:分析項目具體完成的功能,有什麼要求,具體怎麼實現。設計階段:根據分析的結果,設計項目的使用什麼技術,解決難點。開發階段:編碼實現功能,編譯代碼,自我測試。測試階段:專業的測試人員,測整個項目的功能十分符合設計要求。出一個測試告。項目的打包,發佈階段:給用戶安裝項目。
2、Maven能做什麼
1)項目的自動構建,幫助開發人員做項目代碼的編譯,測試,打包,安裝,部署等工作。
2)管理依賴(管理項目中使用的各種jar包)。
依賴:項目中需要使用的其他資源,常見的是jar比如項目要使用mysgl驅動,我們就說項目依賴mysgl驅動。
3、沒有使用maven怎麼管理依賴
管理jar,需要從網絡中單獨下載某個jar,需要選擇正確版本,手工處理jar文件之間的依賴。a.jar裡面要使用b.jar的類。
4、什麼是maven
maven是apache基金會的開源項目,使用java語法開發。Maven這個單詞的本意是:專傢,內行。讀音是['meIv(e)n]或['mevn]。
maven是項目的自動化構建工具,管理項目的依賴。
約定目錄結構
maven項目使用的大多人遵循的目錄結構,叫做約定目錄結構。一個maven項目是一個文件夾。
比如項目叫做Hello
maven的使用方式
①maven可以獨立使用:創建項目,編譯代碼,測試程序,打包,部署等等。
② maven和idea一起使用:通過idea借助maven,實現編碼,測試,打包等等。
POM文件
POM:Project Object Model項目對象模型,maven把項目當做模型處理。操作這個模型就是操作項目。maven通過pom.xml文件實現項目的構建和依賴的管理。
pom 文件:即 Project Object Model項目對象模型。 Maven把一個項目的結構和內 容抽象成一個模型,在xml文件中進行聲明,以方便進行構建和描述,
pom.xml是Maven的靈魂。所以,maven環境搭建好之後,所有的學習和操
作都是關於pom.xml的。
那麼我們來看一下pom.xml文件是什麼樣的
<?xml version="1.0" encoding="UTF-8"?> <!--project是跟標簽,後面是約束文件--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--pom模型的版本,就是4.0.0--> <modelVersion>4.0.0</modelVersion> <!--坐標--> <groupId>youfei1_v</groupId> <artifactId>ch01-Maven-j2se</artifactId> <version>1.0</version> <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> </project>
坐標的概念
坐標組成是groupid,artifiactld,version。坐標概念來自數學。
坐標作用:確定資源的,是資源的唯一標識。在maven中,每個資源都有坐標。坐標值是唯一的。簡稱叫gav。
拿servlet依賴舉例
<!--servlet依賴--> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version>
groupid:組織名稱,代碼。公司,團體或者單位的標識。這個值常使用的公司域名的倒寫。例如:學校的網站www.sanlian.com,groupId:com.sanlian
如果項目規模比較大,也可以是域名倒寫+大項目名稱。
例如:www.baidu.com , 無人車:com.baidu.appollo
artifactid:項目名稱,如果groupId中有項目,此時當前的值就是子項目名。項目名稱是唯一的。
version:版本,項目的版本號,使用的數字。三位組成。例如主版本號,次版本號小版本號,例如:5.2.5。
註意:版本號中有-SNAPSHOT,表示快照,不是穩定的版本。
項目使用gav:
1.每個maven項目,都需要有一個自己的gav。
2.管理依賴,需要使用其他的jar,也需要使用gav作為標識。
依賴 dependency
依賴:項目中要使用的其他資源(jar)。
需要使用maven表示依賴,管理依賴。通過使用dependency和gav一起完成依賴的使用。
註意:需要在pom.xml文件中,使用dependencies和dependency,還有gav完成依賴的說明。
使用依賴的格式:這裡拿junit依賴舉例,標簽中的指的是項目的公司,標簽中指的是項目名稱,標簽中指的是項目的版本。
<dependencies> <!--測試--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies>
註意:標簽要放到標簽的下面
打包類型
標簽:項目打包的類型,有jar,war,ear,pom等等,默認是jar。
註意:標簽的放置位置是這個項目的坐標下面
例如:
<!--坐標--> <groupId>youfei1_v</groupId> <artifactId>ch01-Maven-j2se</artifactId> <version>1.0</version> <packaging>jar</packaging>
倉庫概念
倉庫是存東西的,maven的倉庫存放的是:
1.maven工具自己的jar包。
2.第三方的其他jar,比如項目中要使用mysql驅動。
3.自己寫的程序,可以打包為jar存放到倉庫。
修改本地倉庫位置
本地倉庫(本機倉庫):位於你自己的計算機,它是磁盤中的某個目錄
本地倉庫:默認路徑,是你登錄操作系統的賬號的目錄中/.m2/repository
C:\Users\NING MEI.m2\repository
修改本地倉庫的位置:修改maven工具的配置文件(maven的安裝路徑\conf\setting.xml)步驟:
1)創建一個目錄,作為倉庫使用。目錄不要有中文和空格。目錄不要太深。
例如:D:\oppo
2)修改setting.xml文件,指定到剛剛創建的目錄,例如:D:\oppo
實例演示:找到maven安裝目錄下的conf目錄中的settings.xml文件,
在這個文件裡面增加這個標簽,裡面指定新的倉庫地址
倉庫的工作方式
倉庫的分類
本地倉庫, 就是你的個人計算機上的文件夾,存放各種jar。
遠程倉庫,在互聯網上的,使用網絡才能使用的倉庫。
①:中央倉庫,最權威的,所有的開發人員都共享使用的一個集中的倉庫,
②:中央倉庫的鏡像:就是中央倉庫的備份,在各大洲,重要的城市都有鏡像。
③:在公司內部,在局域網中使用的,不是對外使用的。
倉庫的使用,maven倉庫的使用不需要人為參與。
如果倉庫中有這個jar包就會用,沒有就會去互聯網上下載,從網絡下載的資源,最終會存到本地倉庫一份, 當你下次在用的時候,直接從本地倉庫首先獲取資源。
例如開發人員需要使用mysql驅動,maven首先查本地倉庫—>私 服—>鏡像—>中央倉庫。
配置文件說明
例如:spring依賴和spring-aspects依賴,這些東西表示我們項目中要用到spring和spring-aspects jar包,由maven在倉庫中找到這個jar包並使用它。
<!--spring依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--spring-aspects依賴--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.2.5.RELEASE</version> </dependency>
註意:執行命令要在項目的pom文件所在的位置執行命名。
junit單元測試
單元測試(junit):
junit是一個單元測試的工具,在java中經常使用。
單元:在java中指的是方法。 一個方法就是一個單元,方法是測試的最小單位。
作用:使用junit去測試方法是否完成瞭要求。開發人員自測。
使用單元測試
<dependencies> <!--測試--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies>
在src/test/java目錄中創建測試類文件。寫測試代碼,單元測試使用的建議:
1.測試類的定義,名稱一般是Test+要測試的類名稱
2.測試類它的包名和要測試的類包名一樣。
3.在類中定義方法,要測試代碼。
方法的定義:public方法, 沒有返回值
方法名稱自定義(建議Test+測試的方法名稱)
方法沒有參數
4在測試類中的方法,可以單獨執行。測試類也可以單獨執行
5.在方法的上面加入@Test
生命周期與插件和命令
maven的生命周期:項目構建的各個階段。包括清理,編譯,測試,報告,打包,安裝,部署。
插件:要完成構建項目的各個階段,要使用maven的命令,執行命令的功能是通過插件完成的。插件就是jar,一些類。
命令:執行maven功能是由命令發出的。比如mvn compile
命令:
① mvn clean:清理命令,作用刪除以前生成的數據,刪除target目錄。
插件:maven-clean-plugin,版本是2.5。
②mvn compile:編譯命令,執行的代碼編譯,把src/main/java目錄中的java代碼編譯為class文件,同時把class文件拷貝到target/classes目錄。這個目錄classes是存放類文件的根目錄(也叫做類路徑, classpath)
插件:maven-compiler-plugin版本3.1編譯代碼的插件
maven-resources-plugin版本2.6資源插件,處理文件的。作用是把src/main/resources目錄中的文件拷貝target/classes目錄中。
③mvn test-compile:編譯命令,編譯src/test/java目錄中的源文件,把生成的class拷貝到target/test-classes目錄。同時把src/test/resources目錄中的文件拷貝到test-clasess目錄
插件:maven-compiler-plugin版本31編譯代碼的插件
maven-resources-plugin版本2.6資源插件,處理文件的
④mvn test:測試命令,作用執行test-classes目錄的程序,測試src/main/java目錄中的主程序代碼是否符合要求。
插件:maven-surefire-plugin版本2.12.4
⑤mvn package:打包,作用是把項目中的資源class文件和配置文件都放到一個床縮文件中,默認壓縮文件是jar
類型的。web應用是war類型,擴展是jar,war的。
插件:maven-jar-plugin版本2.4執行打包處理。生成一個jar擴展的文件,放在target目錄下,I
打包的文件包含的是src/main目錄中的所有的生成的class和配置文件和test無關。
⑥mvn install:把生成的打包的文件,安裝到maven倉庫。
插件:maven-install-plugin版本2.4把生成的jar文件安裝到本地倉庫。
註意:每執行一個命令,都會自動先執行前面的, 例如:執行第二個編譯命令,它首先會自動執行清理命令,執行第三個編譯test命令,它首先會自動執行第一個清理命令和第二個編譯命令。
自定義配置插件
在pom.xml文件中,build標簽中,設置插件。
例如設置構建項目相關內容
<build> <plugins> <!--設置插件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <!--指定編譯代碼的jdk版本--> <target>1.8</target> <!--運行java程序使用的jdk版本--> </configuration> </plugin> </plugin> </plugin>
註意:默認使用1.7版本的jdk 通過此方式 可以更改;build標簽和project標簽平級。
到此這篇關於Maven使用方法詳及方式詳細介紹的文章就介紹到這瞭,更多相關Maven使用方法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java基礎之Maven詳解
- maven-compiler-plugin版本指定方式
- idea2020.3配置maven環境並配置Tomcat的詳細教程
- Java Mybatis框架由淺入深全解析下篇
- 構建Maven多模塊項目的方法