最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven是什么?Maven的概念+作用+倉庫的介紹+常用命令的詳解

 更新時間:2020年09月14日 09:01:24   作者:一只胡說八道的猴子  
Maven是一個項目管理工具,它包含了一個對象模型。一組標(biāo)準(zhǔn)集合,一個依賴管理系統(tǒng)。和用來運行定義在生命周期階段中插件目標(biāo)和邏輯.,本文給大家介紹Maven的概念+作用+倉庫的介紹+常用命令,感興趣的的朋友跟隨小編一起看看吧

Maven系列1

1.什么是Maven?

Maven是一個項目管理工具,它包含了一個對象模型。一組標(biāo)準(zhǔn)集合,一個依賴管理系統(tǒng)。和用來運行定義在生命周期階段中插件目標(biāo)和邏輯。
核心功能
Maven的核心功能是合理敘述項目間的依賴關(guān)系,通俗點 就是通過pom.xml文件的配置獲取jar包不用手動的去添加jar包,,這個pom.xml包我后面會敘述,不過已經(jīng)學(xué)習(xí)過maven的 人應(yīng)該對這個很熟悉。其本質(zhì)就是通過配置pom.xml來獲取jar包,當(dāng)然這是在該項目必須是maven項目的前提下。那么什么是maven項目
maven項目是啥?
我們這樣來理解maven項目,就是在java項目和web項目上裹了一層maven,本質(zhì)上java項目還是java項目,web項目還是web項目,但是包裹了maven之后,就可以使用maven提供的一些功能,即通過pom.xml添加jar包
就像在蜜汁雞外面裹了一層面粉油炸一下變成了炸雞,但是他還是一只雞

2.Maven能夠解決什么問題

在想Maven可以解決什么問題之前我們先來想想我們開發(fā)過程中經(jīng)常遇到什么問題
1、我們需要引用各種 jar 包,尤其是比較大的工程,引用的 jar 包往往有幾十個乃至上百個, 每用到一種 jar 包,都需要手動引入工程目錄,而且經(jīng)常遇到各種讓人抓狂的 jar 包沖突,版本沖突。
2、我們辛辛苦苦寫好了 Java 文件,可是只懂 0 和 1 的白癡電腦卻完全讀不懂,需要將它編譯成二進(jìn)制字節(jié)碼。好歹現(xiàn)在這項工作可以由各種集成開發(fā)工具幫我們完成,Eclipse、IDEA 等都可以將代碼即時編譯。當(dāng)然,如果你嫌生命漫長,何不鋪張,也可以用記事本來敲代碼,然后用 javac 命令一個個地去編譯,逗電腦玩。
3、世界上沒有不存在 bug 的代碼,計算機(jī)喜歡 bug 就和人們總是喜歡美女帥哥一樣。為了追求美為了減少 bug,因此寫完了代碼,我們還要寫一些單元測試,然后一個個的運行來檢驗代碼質(zhì)量。
4、再優(yōu)雅的代碼也是要出來賣的。我們后面還需要把代碼與各種配置文件、資源整合到一起,定型打包,如果是 web 項目,還需要將之發(fā)布到服務(wù)器,供人蹂躪。
maven所幫助我們解決的問題
以上的這些問題maven都把我們解決了,沒錯maven可以幫我們
1構(gòu)建工程,
2管理jar,
3.編譯代碼,
4.自動運行單元測試,
5.打包
6.生成報表,
7.部署項目,生成web站點。
有沒有孫悟空得到金箍棒的感覺

3.接下來我就舉個例子讓大家先見識見識maven的功能

前面我們通過web階段的項目,要能夠?qū)㈨椖窟\行起來,就必須將該項目所依賴的一些jar包添加到工程中,否則項目就不可以運行了,如果相同架構(gòu)的項目有十幾個,那么我們就需要將這一份jar包復(fù)制到十個不同的工程中我們一起來看看CRM工程的大小
使用傳統(tǒng)的CRM項目

使用maven構(gòu)建

4.Maven的依賴管理

為什么使用maven之后文件夾就如此之小了呢?其實這我們在前面就提到過了即通過配置pom.xml的文件來配置依賴,而Maven的一個核心特征就是依賴管理,當(dāng)我們涉及到多模塊的項目(包含成百個模塊或者子項目),管理依賴就變成了一個極為困難的任務(wù)Maven展示出了他對處理這種情形的高度控制
傳統(tǒng)的web項目中,我們必須將工程所依賴的jar包復(fù)制到工程中,導(dǎo)致工程變的很大,那么maven是如何通過操作使工程變少的呢

通過圖解可以發(fā)現(xiàn)maven工程不直接將jar包導(dǎo)入到工程中,而是通過再pom.xml中添加所需的jar包的坐標(biāo),這樣就避免了jar直接引入進(jìn)來,在需要用到j(luò)ar包的時候,只要查找pom.xml文件,再通過pom.xml中的坐標(biāo),到一個專門用于存放jar包的倉庫中根據(jù)坐標(biāo)從而找到這些jar包,再把這些jar包拿去運行
看到這讀者們可能會有疑問
1.存放jar包的倉庫長什么樣?
這個我們會在后面一一講解,倉庫也分為許多種類
2.通過讀取pom.xml坐標(biāo),來找jar的方式會不會導(dǎo)致速度很慢。從而導(dǎo)致這些方案不可行
通過 pom.xml 文件配置要引入的 jar 包的坐標(biāo),再讀取坐標(biāo)并到倉庫中加載 jar 包,這
樣我們就可以直接使用 jar 包了,為了解決這個過程中速度慢的問題,maven 中也有索引的概念,通過建立索引,可以大大提高加載 jar 包的速度,使得我們認(rèn)為 jar 包基本跟放在本地的工程文件中再讀取出來的速度是一樣的。這個過程就好比我們查閱字典時,為了能夠加快查找到內(nèi)容,書前面的目錄就好比是索引,有了這個目錄我們就可以方便找到內(nèi)容了,一樣的在 maven 倉庫中有了索引我們就可以認(rèn)為可以快速找到 jar 包。

5.倉庫的概念

倉庫就是存放jar包的地方,即我們前面說的通過pom.xml中通過設(shè)置索引來到倉庫中尋找jar包
倉庫分為:本地倉庫,第三方倉庫,中央倉庫

5.1本地倉庫
用來存儲從遠(yuǎn)程倉庫或者中央倉庫下載的插件和jar包,項目使用一些插件或jar包
優(yōu)先從本地倉庫查找
默認(rèn)本地倉庫的位置在${user.dir}/.m2/repository,${user.dir}表示 windows 用戶目錄。

5.2第三方倉庫
d第三方倉庫,又稱為內(nèi)部中心倉庫,又稱為私服
私服:一般由公司自己設(shè)立,只為本公司內(nèi)部共享使用,它既可以作為公司內(nèi)部構(gòu)建協(xié)作和存檔,也可作為公用類庫鏡像緩存,減少在外部訪問和下載的頻率使用私服為了減少對中央倉庫的訪問私服可以使用的是局域網(wǎng),中央倉庫必須使用外網(wǎng)。也就是一般公司都會創(chuàng)建這種第三方倉庫,保證項目開發(fā)時,項目所需用的jar都從該倉庫中拿,每個人的版本就都一樣。
注意:連接私服,需要單獨配置。如果沒有配置私服,默認(rèn)不使用

5.3中央倉庫
在 maven 軟件中內(nèi)置一個遠(yuǎn)程倉庫地址 http://repo1.maven.org/maven2 ,它是中央倉庫,服務(wù)于整個互聯(lián)網(wǎng),它是由 Maven 團(tuán)隊自己維護(hù),里面存儲了非常全的 jar 包,它含了世界上大部分流行的開源項目構(gòu)件。

獲取jar包的過程
優(yōu)先從本地倉庫查找,如果本地倉庫沒有該jar包,如果配置了私服,就從私服中查找,私服中沒有就從中央倉庫中查找,然后下載到本地倉庫,下次使用就可以直接從本地倉庫中查找,沒有配置私服則,直接從中央倉庫中查找

6.Maven java項目結(jié)構(gòu)

Maven工程目錄結(jié)構(gòu)

圖中有一個target目錄,是因為將該java項目進(jìn)行了編譯,src/main/java下的源代碼就會編譯成.class文件放入target目錄中,target就是輸出目錄。
作為一個 maven 工程,它的 src 目錄和 pom.xml 是必備的。
進(jìn)入 src 目錄后,我們發(fā)現(xiàn)它里面的目錄結(jié)構(gòu)如下:

項目名稱
--pom.xml 核心配置,項目根下
--src
--main
--java java源碼目錄
--resources java配置文件目錄
--test
--java 源碼測試目錄
--resource 測試配置目錄

7.maven的常用命令

7.1 compile
compile是maven工程的編譯命令,作用是將 src/main/java 下的文件編譯為 class 文件輸出到 target
目錄下。
7.2 test
test是maven工程的測試命令,會執(zhí)行 src/test/java 下的單元測試類。
cmd 執(zhí)行 mvn test 執(zhí)行 src/test/java 下單元測試類,下圖為測試結(jié)果,運行 1 個測試用例,全部成功。
7.3 clean
clean是maven工程的清理命令,執(zhí)行clean會刪除target目錄及其內(nèi)容
7.4 package
package是maven工程的打包命令,對于java工程執(zhí)行 package 打成 jar 包,對于 web 工程打成 war
包。
7.5 install
install 是 maven 工程的安裝命令,執(zhí)行 install 將 maven 打成 jar 包或 war 包發(fā)布到本地倉庫。
從運行結(jié)果中,可以看出:當(dāng)后面的命令執(zhí)行時,前面的操作過程也都會自動執(zhí)行

8.maven的生命周期

maven對項目構(gòu)建過程分為三套相互獨立的生命周期,這里說的三套而且是相互獨立,
這三套分別是:
Clean Lifecycle :在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作。
Default Lifecycle :構(gòu)建的核心部分,編譯,測試,打包,部署等等。
Site Lifecycle :生成項目報告,站點,發(fā)布站點。

9.maven的概念模型

Maven 包含了一個項目對象模型 (Project Object Model),一組標(biāo)準(zhǔn)集合,一個項目生命周期(Project
Lifecycle),一個依賴管理系統(tǒng)(Dependency Management System),和用來運行定義在生命周期階段
(phase)中插件(plugin)目標(biāo)(goal)的邏輯。

9.1項目對象模型:
一個maven工程都有一個pom.xml文件。通過pom.xml文件定義項目的坐標(biāo),項目的依賴,項目的信息
插件目標(biāo)等

9.2依賴管理系統(tǒng):
通過 maven 的依賴管理對項目所依賴的 jar 包進(jìn)行統(tǒng)一管理。
比如:項目依賴 junit4.9,通過在 pom.xml 中定義 junit4.9 的依賴即使用 junit4.9,如下所示是 junit4.9
的依賴定義:

<!-- 依賴關(guān)系 -->
<dependencies>
<!-- 此項目運行使用 junit,所以此項目依賴 junit -->
<dependency>
<!-- junit 的項目名稱 -->
<groupId>junit</groupId>
<!-- junit 的模塊名稱 -->
<artifactId>junit</artifactId>
<!-- junit 版本 -->
<version>4.9</version>
<!-- 依賴范圍:單元測試時使用 junit -->
<scope>test</scope>
</dependency>

9.3 一個項目的生命周期
使用maven完成項目的構(gòu)建,項目構(gòu)建包括:清理,編譯,部署等過程,maven將這些過程規(guī)范為一個生命周期,如下所示是生命周期的各階段

maven 通過執(zhí)行一些簡單命令即可實現(xiàn)上邊生命周期的各各過程,比如執(zhí)行 mvn compile 執(zhí)行編譯、
執(zhí)行 mvn clean 執(zhí)行清理。

9.4 一組標(biāo)準(zhǔn)集合
maven將整個項目管理過程定義為一組標(biāo)準(zhǔn)集合,比如通過maven構(gòu)建工程有標(biāo)準(zhǔn)的目錄結(jié)構(gòu),有標(biāo)準(zhǔn)的生命周期階段,依賴管理有標(biāo)準(zhǔn)的坐標(biāo)定義

9.5 插件目標(biāo)

maven管理項目生命周期都是基于插件完成的

10.使用idea開發(fā)meven項目

這個就是幾個簡單的參數(shù)配置一下沒什么東西講,我就放個流程圖好了

1.

2.

3.


6.

7.


8.

9.

10.

11.

11.獲取jar包方式

到中央倉庫的官網(wǎng)上去下載
網(wǎng)址:
http://search.maven.org/
http://mvnrepository.com/

例圖:

以上就是maven的一些基礎(chǔ)知識,后續(xù)我會更新更高階的maven知識
,即我們在項目中經(jīng)常使用到的。

到此這篇關(guān)于Maven是什么?Maven的概念+作用+倉庫的介紹+常用命令的文章就介紹到這了,更多相關(guān)Maven常用命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java環(huán)境配置圖文教程(推薦)

    Java環(huán)境配置圖文教程(推薦)

    下面小編就為大家?guī)硪黄狫ava環(huán)境配置圖文教程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java重寫與重載之間的區(qū)別

    Java重寫與重載之間的區(qū)別

    本文主要介紹了Java重寫與重載之間的區(qū)別。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 通過AOP攔截Spring?Boot日志并將其存入數(shù)據(jù)庫功能實現(xiàn)

    通過AOP攔截Spring?Boot日志并將其存入數(shù)據(jù)庫功能實現(xiàn)

    本文介紹了如何使用Spring Boot和AOP技術(shù)實現(xiàn)攔截系統(tǒng)日志并保存到數(shù)據(jù)庫中的功能,包括配置數(shù)據(jù)庫連接、定義日志實體類、定義日志攔截器、使用AOP攔截日志并保存到數(shù)據(jù)庫中等步驟,感興趣的朋友一起看看吧
    2023-08-08
  • Java使用wait和notify實現(xiàn)線程之間的通信

    Java使用wait和notify實現(xiàn)線程之間的通信

    Java 線程通信是將多個獨立的線程個體進(jìn)行關(guān)聯(lián)處理,使得線程與線程之間能進(jìn)行相互通信,下面這篇文章主要給大家介紹了關(guān)于Java使用wait和notify實現(xiàn)線程之間通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Spring系列之事物管理

    Spring系列之事物管理

    這篇文章主要介紹了Spring系列之事物管理,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring方面知識具有一定的參考學(xué)習(xí)價值,需要的朋友們一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • 詳解SpringSecurity中的Authentication信息與登錄流程

    詳解SpringSecurity中的Authentication信息與登錄流程

    這篇文章主要介紹了SpringSecurity中的Authentication信息與登錄流程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • springboot內(nèi)置tomcat之NIO處理流程一覽

    springboot內(nèi)置tomcat之NIO處理流程一覽

    這篇文章主要介紹了springboot內(nèi)置tomcat之NIO處理流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java封裝數(shù)組之添加元素操作實例分析

    Java封裝數(shù)組之添加元素操作實例分析

    這篇文章主要介紹了Java封裝數(shù)組之添加元素操作,結(jié)合實例形式分析了Java封裝數(shù)組實現(xiàn)元素追加、插入等相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • Java中類的初始化和實例化區(qū)別詳解

    Java中類的初始化和實例化區(qū)別詳解

    這篇文章主要介紹了Java中類的初始化和實例化區(qū)別詳解,類的初始化<BR>是完成程序執(zhí)行前的準(zhǔn)備工作,類的實例化(實例化對象)是指創(chuàng)建一個對象的過程,需要的朋友可以參考下
    2023-08-08
  • 詳解java的四舍五入與保留位示例

    詳解java的四舍五入與保留位示例

    本篇文章主要介紹了java的四舍五入與保留位示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

上蔡县| 读书| 德州市| 额济纳旗| 郎溪县| 商南县| 枣庄市| 资阳市| 平果县| 弥勒县| 和政县| 洛南县| 海门市| 乌审旗| 竹北市| 越西县| 西吉县| 庄浪县| 桂林市| 滨海县| 抚松县| 扶风县| 阳西县| 黔东| 腾冲县| 桓台县| 清河县| 保靖县| 遂昌县| 濉溪县| 建德市| 聂拉木县| 兴安县| 陇川县| 嫩江县| 施秉县| 鹰潭市| 民丰县| 靖宇县| 松江区| 龙岩市|