您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Maven的原理和使用方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Maven的原理和使用方法”吧!
Maven基礎(chǔ)
1. 坐標(biāo)
Maven坐標(biāo)主要組成(GAV),確定一個(gè)jar包的位置
groupId:定義當(dāng)前Maven組織名稱
artifactId:定義實(shí)際項(xiàng)目名稱
version:定義當(dāng)前項(xiàng)目的當(dāng)前版本
2. 坐標(biāo)的查找
訪問http://www.mvnrepository.com
3. 依賴管理
(1) scope 依賴范圍,用來控制依賴和編譯、測試、運(yùn)行的classpath的關(guān)系
(2) compile: 默認(rèn)編譯依賴范圍。對于編譯、測試、運(yùn)行、打包時(shí)都需要,例如:struts2-core
(3) test:測試依賴范圍。測試時(shí)需要,編譯、運(yùn)行、打包時(shí)不需要,例如:junit
(4) provided:已提供依賴范圍。編譯、測試時(shí)需要,運(yùn)行、打包時(shí)不需要。因?yàn)橛扇萜饕呀?jīng)提供,例如:jsp-api、servlet-api
(5) runtime:運(yùn)行時(shí)提供。測試、運(yùn)行、打包時(shí)需要,編譯時(shí)不需要。例如:jdbc驅(qū)動
4. 添加jar包
在pom中添加如下代碼:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies>
會發(fā)現(xiàn)jar包已添加到項(xiàng)目中
5. 依賴傳遞
直接依賴和間接依賴,test2 依賴 test1,test3依賴test2,test2 直接依賴 test1,test3間接依賴test1
依賴范圍是compile的時(shí)候,依賴可以傳遞
依賴范圍是test的時(shí)候,依賴不會得以傳遞
6. 可選依賴
<optional> true/false<optional> 是否可選,也可以理解為是否向下傳遞。在依賴中添加optional選項(xiàng)決定此依賴是否向下傳遞,如果是true則不傳遞,如果是false就傳遞,默認(rèn)為false
7. 依賴版本沖突的解決
(1) 第一聲明優(yōu)先原則
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> </dependency>
(2) 路徑近者優(yōu)先原則,自己添加jar包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version> </dependency>
(3) 排除原則
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency>
(4) 版本鎖定原則
<properties> <spring.version>4.2.4.RELEASE</spring.version> </properties> <!-- 鎖定版本,spring4.2.4 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement>
8. 生命周期
compile test package install deploy(發(fā)布到私服)
三種生命周期:
Clean Lifecycle:
在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作
Default Lifecycle:
compile test package install deploy構(gòu)建的核心部分,編譯,測試,打包,部署等等
Site Lifecycle:
生成項(xiàng)目報(bào)告,站點(diǎn),發(fā)布站點(diǎn)
(1) Clean生命周期:清理項(xiàng)目
Clean生命周期一共包含了三個(gè)階段:
pre-clean 執(zhí)行一些需要在clean之前完成的工作 clean 移除所有上一次構(gòu)建生成的文件 post-clean 執(zhí)行一些需要在clean之后立刻完成的工作
也就是說,mvn clean 等同于 mvn pre-clean clean
如果我們運(yùn)行 mvn post-clean ,那么 pre-clean,clean 都會被運(yùn)行。
這是Maven很重要的一個(gè)規(guī)則,可以大大簡化命令行的輸入。
(2) Default生命周期:構(gòu)造項(xiàng)目
Default生命周期是Maven生命周期中最重要的一個(gè),絕大部分工作都發(fā)生在這個(gè)生命周期中。這里解釋一些比較重要和常用的階段
validate generate-sources process-sources generate-resources process-resources 復(fù)制并處理資源文件,至目標(biāo)目錄,準(zhǔn)備打包。 compile 編譯項(xiàng)目的源代碼。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 復(fù)制并處理資源文件,至目標(biāo)測試目錄。 test-compile 編譯測試源代碼。 process-test-classes test 使用合適的單元測試框架運(yùn)行測試。這些測試代碼不會被打包或部署。 prepare-package package 接受編譯好的代碼,打包成可發(fā)布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install 將包安裝至本地倉庫,以讓其它項(xiàng)目依賴。 deploy 將最終的包復(fù)制到遠(yuǎn)程的倉庫,以讓其它開發(fā)人員與項(xiàng)目共享
運(yùn)行任何一個(gè)階段的時(shí)候,它前面的所有階段都會被運(yùn)行
這也就是為什么我們運(yùn)行mvn install 的時(shí)候,代碼會被編譯,測試,打包,安裝到本地倉庫
此外,Maven的插件機(jī)制是完全依賴Maven的生命周期的,因此理解生命周期至關(guān)重要。
(3) Sit生命周期:生成項(xiàng)目站點(diǎn)
這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布Maven站點(diǎn),這可是Maven相當(dāng)強(qiáng)大的功能
Manager比較喜歡,文檔及統(tǒng)計(jì)數(shù)據(jù)自動生成,很好看。我們就不用學(xué),以后自己研究
pre-site 執(zhí)行一些需要在生成站點(diǎn)文檔之前完成的工作 site 生成項(xiàng)目的站點(diǎn)文檔 post-site 執(zhí)行一些需要在生成站點(diǎn)文檔之后完成的工作,并且為部署做準(zhǔn)備 site-deploy 將生成的站點(diǎn)文檔部署到特定的服務(wù)器上
9. 模型圖
到此,相信大家對“Maven的原理和使用方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。