日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1 maven概念模型

2 maven的生命周期,項目構建過程

Maven生命周期就是為了對所有的構建過程進行抽象和統一

包括項目清理,初始化,編譯,打包,測試,部署等幾乎所有構建步驟

?

Maven有“三套”相互獨立的生命周期,而且相互獨立,這三套生命周期分別是:

Maven三大生命周期

clean:清理項目的

在進行真正的構建之前進行一些清理工作。

default:構建項目的

構建的核心部分,編譯,測試,打包,部署等等。

site:生成項目站點的

生成項目報告,站點,發布站點

要特別注意的是:它們是相互獨立的,可以僅僅調用clean來清理工作目錄,僅僅調用site來生成站點。當然也可以直接運行mvn clean install site 運行著三套生命周期。

?

clean生命周期每套生命周期都由一組階段(Phase組成),我們平時在命令行輸入的命令總會對應于一個特定的階段。比如mvn clean,這個cleanClean生命周期的一個階段。

clean生命周期

pre-clean

執行一些需要在clean之前完成的工作

clean

移除所有上一次構建生成的文件

post-clean

執行一些需要在clean之后立刻完成的工作

注意:

mvn clean 中的clean就是上面的clean,在一個生命周期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,mvn clean等同于mvn pre-clean clean,那么pre-clean就會被運行。這是Maven很重要的一個規則,可以大大簡化命令行的輸入。

?

site生命周期

pre-site

執行需要生成站點文檔之前完成的工作

site

生成項目的站點文檔

post-site

執行一些需要生成站點文檔之后完成的工作,并且為部署做準備

site-deploy

將生成的站點文檔部署到特定的服務器上

注意:

這里經常用到的是site階段和site-deploy階段,用以生成和發布Maven站點,這可是Maven相當強大的功能,Manager比較喜歡,文檔及統計數據自動生成。

?

Default生命周期是Maven生命周期中最重要的一個,絕大部分工作都發生在這個生命周期中。這里,只解釋一些比較重要和常用的階段:

Default生命周期

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 Maven坐標

Maven坐標主要組成

groupId :定義當前Maven項目隸屬項目(習慣用包名來做)

例子:


artifactid:定義實際項目中的一個模板(一般是主類名)

version:定義當前項目的當前版本

packaging:定義該項目的打包方式(jar,war等方式)



4 依賴管理(依賴范圍,依賴聲明)

依賴范圍(scope

依賴聲明

<dependencies>

?????????????????? <dependency>

??????????????????????????? <groupId>junit</groupId>

??????????????????????????? <artifactId>junit</artifactId>

??????????????????????????? <version>4.10</version>

??????????????????????????? <scope>test</scope>

?????????????????? </dependency>

</dependencies>

其中依賴范圍scope 用來控制依賴和編譯,測試,運行的classpath的關系.主要的是三種依賴關系如下:

1.?????? compile:默認編譯依賴范圍。對于編譯,測試,運行三種classpath都有效

2.?????? test:測試依賴范圍。只對于測試classpath有效

3.?????? provided:已提供依賴范圍。對于編譯,測試的classpath都有效,但對于運行無效。因此由容器已經提供,例如servlet_api

4.?????? runtime:運行時提供。例如:jdbc驅動

?

傳遞性依賴:

?

見傳遞依賴圖

?

傳遞性依賴影響范圍

傳遞性依賴原則:

?

A-->B

A-->C

?

1.路徑最近者優先

2.路徑相同,第一聲明者優先

?

注意:

1.dependencyManagement中定義的依賴子module不會共享

2.dependencies中定義的依賴子module可以共享

?

可選依賴不被傳遞

?

依賴優化:mvn dependency:list

5 倉庫管理,私服概念

何為Maven倉庫

A 用來統一存儲所有Maven共享構建的位置就是倉庫

Maven倉庫布局

根據Maven坐標定義每個構建在倉庫中唯一存儲路徑

大致為:groupId/artifactId/version/artifactId-version.packaging

倉庫的分類:

本地倉庫:

~/.m2/repository/

每個用戶只有一個本地倉庫

遠程倉庫

中央倉庫:Maven默認的遠程倉庫

http://repo1.maven.org/maven2

私服:是一種特殊的遠程倉庫,它是架設在局域網內的倉庫

鏡像:用來替代中央倉庫,速度一般比中央倉庫塊。

?

總結

以上是生活随笔為你收集整理的4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。