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