溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Maven的原理和使用方法

發(fā)布時(shí)間:2021-06-26 10:09:01 來源:億速云 閱讀:209 作者:chen 欄目:大數(shù)據(jù)

本篇內(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)系

Maven的原理和使用方法

       (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的原理和使用方法

到此,相信大家對“Maven的原理和使用方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI