柚子快報(bào)激活碼778899分享:Java Web-Maven
柚子快報(bào)激活碼778899分享:Java Web-Maven
Maven是apache旗下的一個(gè)開(kāi)源項(xiàng)目,是一款用于管理和構(gòu)建java項(xiàng)目的工具
Maven的作用
1.依賴管理:方便快捷的管理項(xiàng)目依賴資源(jar包),避免版本沖突問(wèn)題
我們有的項(xiàng)目需要大量的jar包,采用手動(dòng)導(dǎo)包的方式非常繁瑣,并且版本升級(jí)也不方便。當(dāng)我們使用maven,只要?jiǎng)?chuàng)建maven工程,只需要在pom.xml配置文件中配置即可。
2.統(tǒng)一項(xiàng)目結(jié)構(gòu):提供標(biāo)準(zhǔn),統(tǒng)一的項(xiàng)目結(jié)構(gòu)
我們程序員使用的開(kāi)發(fā)工具很多,但構(gòu)建出來(lái)的項(xiàng)目目錄結(jié)構(gòu)有差異,使用Maven提供了標(biāo)準(zhǔn)的項(xiàng)目結(jié)構(gòu),這樣不同開(kāi)發(fā)工具開(kāi)發(fā)的項(xiàng)目之間可以相互導(dǎo)入
pom.xml是maven的核心依賴,當(dāng)前項(xiàng)目要導(dǎo)入的核心依賴都在里面
3.項(xiàng)目構(gòu)建:提供便準(zhǔn)跨平臺(tái)的自動(dòng)化項(xiàng)目構(gòu)建方式
我們可以通過(guò)里面的指令快速完成清理,編譯,測(cè)試打包等工作
Maven模型
各個(gè)插件就可以完成各種功能例如編譯插件進(jìn)行編譯,打包階段進(jìn)行打包,而每部操作都會(huì)產(chǎn)生對(duì)應(yīng)的文件,放在target目錄下
項(xiàng)目對(duì)象模型是指在pom.xml文件中通過(guò)一小段配置信息來(lái) 描述這個(gè)工程,如下圖標(biāo)明了項(xiàng)目的組織,模塊名稱,版本。他們稱為工程的坐標(biāo)
當(dāng)我們要關(guān)聯(lián)jar包,就可以在xml文件當(dāng)中添加依賴管理模型。在xml文件中用標(biāo)簽添加依賴
添加依賴之后,maven會(huì)自動(dòng)到倉(cāng)庫(kù)查找依賴。首先到本地倉(cāng)庫(kù)查找,如果本地倉(cāng)庫(kù)沒(méi)有,會(huì)連接中央倉(cāng)庫(kù)的jar包,下載到本地倉(cāng)庫(kù)。為了提高加載速度,還會(huì)引用公司自己搭建的倉(cāng)庫(kù)(私服),只要公司中有一個(gè)人用到了依賴,就會(huì)把依賴下載到私服中
倉(cāng)庫(kù):是用于存儲(chǔ)資源,管理各種jar包的
Maven安裝
1.下載地址:Maven – Download Apache Maven
bin目錄存放的是可執(zhí)行文件,conf目錄存放的是配置文件,lib里是存放的jar包資源
2.配置本地倉(cāng)庫(kù):配置一個(gè)地址作為本地倉(cāng)庫(kù)用來(lái)存儲(chǔ)下載的jar包資源
方法:修改conf/setting.xml中的
3.配置私服:修改conf/settings.xml中的
4.配置環(huán)境變量:MAVEN_HOME為maven的解壓目錄,并將其bin目錄加入PATH環(huán)境變量。
IDEA集成maven
配置maven環(huán)境
配置當(dāng)前工程的maven環(huán)境
配置安裝路徑,xml文件和本地倉(cāng)庫(kù)
關(guān)聯(lián)的jre是否是對(duì)應(yīng)的版本
和配置java語(yǔ)言的字節(jié)碼版本
配置全局maven環(huán)境工程
在主界面配置即可
IDEA創(chuàng)建maven項(xiàng)目
?1.創(chuàng)建項(xiàng)目,選擇maven Archetype,并修改 Archetype的值
2.填寫坐標(biāo)信息
坐標(biāo)是資源的唯一標(biāo)識(shí),通過(guò)坐標(biāo)可以定義資源的唯一位置
使用坐標(biāo)來(lái)定義項(xiàng)目或引入項(xiàng)目中需要的依賴
導(dǎo)入maven項(xiàng)目
方式一:打開(kāi)IDEA,選擇右側(cè)Maven面板,點(diǎn)擊+號(hào),選中對(duì)應(yīng)項(xiàng)目的pom.xml文件,雙擊即可。
?
如果點(diǎn)沒(méi)有彈出對(duì)話框,點(diǎn)擊Apperance勾選進(jìn)行調(diào)出
方式二:模塊中導(dǎo)入pom文件
依賴管理
依賴配置
依賴:指當(dāng)前項(xiàng)目運(yùn)行所需要的jar包,一個(gè)項(xiàng)目中可以引入多個(gè)依賴。配置: 1. 在pom.xml中編寫
2. 在
3. 定義坐標(biāo)的 groupld, artifactid, version
4. 點(diǎn)擊刷新按鈕,引入最新加入的坐標(biāo)
第一次使用依賴可能未下載,需要點(diǎn)擊刷新按鈕刷新聯(lián)網(wǎng)下載依賴
如果不知道依賴的坐標(biāo)信息,可以到https://mvnrepository.com/中搜索。
依賴傳遞
依賴具有傳遞性,被依賴的資源如果依賴了其他資源,那么依賴的依賴也會(huì)導(dǎo)入?
排除依賴 排除依賴指主動(dòng)斷開(kāi)依賴的資源,被排除的資源無(wú)需指定版本。
依賴范圍
依賴的jar包,默認(rèn)情況下,可以在任何地方使用??梢酝ㄟ^(guò)
作用范圍:
主程序范圍有效。(main文件夾范圍內(nèi)) 測(cè)試程序范圍有效。(test文件夾范圍內(nèi)) 是否參與打包運(yùn)行。(package指令范圍內(nèi))
生命周期
Maven中有3套相互獨(dú)立的生命周期:
?clean: 清理工作。
?default:核心工作,如:編譯、測(cè)試、打包、安裝、部署等。
?site:生成報(bào)告、發(fā)布站點(diǎn)等。
每套生命周期包含一些階段(phase),階段是有順序的,后面的階段依賴于前面的階段。
lifecycle就是生命階段。
我們來(lái)講幾個(gè)重要的生命階段:
clean:移除上一次構(gòu)建生成的文件
?compile:編譯項(xiàng)目源代碼
?test:使用合適的單元測(cè)試框架運(yùn)行測(cè)試(junit)
?package:將編譯后的文件打包,如:jar、war等
?install:安裝項(xiàng)目到本地倉(cāng)庫(kù)
執(zhí)行指定生命周期的方式:
在idea中,右側(cè)的maven工具欄,選中對(duì)應(yīng)的生命周期,雙擊執(zhí)行。
?分模塊設(shè)計(jì)
沒(méi)分模塊:不便維護(hù),組件難以復(fù)用。于是便可以將項(xiàng)目進(jìn)行分模塊設(shè)計(jì)。
將項(xiàng)目按照功能拆分成若干個(gè)子模塊,方便項(xiàng)目的維護(hù),擴(kuò)展,模塊間的相互調(diào)用,資源共享。
模塊繼承
防止多模塊之間引入同一依賴的繁瑣問(wèn)題,可以使用Maven的繼承解決。
??
我們發(fā)現(xiàn)所有的SpringBoot工程都有一個(gè)統(tǒng)一的父工程 Spring-Boot-strart-parent。
Maven當(dāng)中一個(gè)工程只能繼承一個(gè)父工程。但是所有的SpringBoot項(xiàng)目都繼承一個(gè)默認(rèn)的父工程,那我們?nèi)绾螌?shí)現(xiàn)繼承呢?使用多重繼承,也就是只需要父工程繼承默認(rèn)工程,子工程繼承復(fù)工程。
1.創(chuàng)建一個(gè)父工程模塊,通過(guò)packaging標(biāo)簽 設(shè)置打包方式為pom。
jar:普通模塊打包,springboot項(xiàng)目基本都是jar包(內(nèi)嵌tomcat運(yùn)行)war:普通web程序打包,需要部署在外部的tomcat服務(wù)器中運(yùn)行(Servelet,SpringMVC)pom:父工程或聚合工程,該模塊不寫代碼,僅進(jìn)行依賴管理
2.讓子工程繼承父工程,并將子工程共有的依賴引入在父工程當(dāng)中,實(shí)現(xiàn)依賴的繼承。同時(shí)在子工程的pom.xml文件中,通過(guò)relativePath標(biāo)簽來(lái)配置繼承關(guān)系。配置父工程pom文件的相對(duì)路徑。
實(shí)現(xiàn):
注意:
在子工程中,配置了繼承關(guān)系之后,坐標(biāo)中的groupId是可以省略的,因?yàn)闀?huì)自動(dòng)繼承父工程的。若父工程和子工程都配置了同一個(gè)依賴的不同版本,以子工程的為準(zhǔn)
版本鎖定
在maven中,可以在父工程pom文件通過(guò)
maven自定義屬性功能:為了能夠統(tǒng)一管理引入的版本號(hào),可以通過(guò)自定義屬性的方法來(lái)引入。
通過(guò)
在依賴的
聚合??
聚合是將多個(gè)多個(gè)模塊組織成一個(gè)整體,同時(shí)進(jìn)行項(xiàng)目的構(gòu)建。
?我們需要先將項(xiàng)目依賴的模塊以及父工程先install,來(lái)往maven的本地倉(cāng)庫(kù)中安裝jar包,這樣在項(xiàng)目打包時(shí)才能在本地倉(cāng)庫(kù)中找到要依賴的jar包。這樣很繁瑣,能通過(guò)聚合來(lái)進(jìn)行簡(jiǎn)化。
?需要一個(gè)聚合工程:聚合工程是一個(gè)不具有業(yè)務(wù)功能的"空工程"(有且只有一個(gè)pom文件)。
注意:通常父工程也是聚合工程。聚合工程中所包含的模塊,在構(gòu)建時(shí),會(huì)自動(dòng)根據(jù)模塊間的依賴關(guān)系設(shè)置構(gòu)建順序,與聚合工程中模塊的配置書寫位置無(wú)關(guān)。
可以通過(guò)maven中通過(guò)
作用
聚合用于快速構(gòu)建項(xiàng)目用于簡(jiǎn)化依賴配置、統(tǒng)一管理依賴
相同點(diǎn):
聚合與繼承的pom.xm1文件打包方式均為pom,可以將兩種關(guān)系制作到同一個(gè)pom文件中聚合與繼承均屬于設(shè)計(jì)型模塊,并無(wú)實(shí)際的模塊內(nèi)容
不同點(diǎn):
聚合是在聚合工程中配置關(guān)系,聚合可以感知到參與聚合的模塊有哪些繼承是在子模塊中配置關(guān)系,父模塊無(wú)法感知哪些子模塊繼承了自己
私服
資源上傳與下載
首先將jar包安裝到本地倉(cāng)庫(kù)中,然后執(zhí)行deploy把本地倉(cāng)庫(kù)的資源發(fā)布到私服倉(cāng)庫(kù)當(dāng)中。
項(xiàng)目中要指定倉(cāng)庫(kù)的url地址。訪問(wèn)私服的用戶名和密碼。
私服當(dāng)中有很多倉(cāng)庫(kù),有一個(gè)中央倉(cāng)庫(kù),relase,snapshot。
項(xiàng)目版本:
RELEASE(發(fā)行版本):功能趨于穩(wěn)定、當(dāng)前更新停止,可以用于發(fā)行的版本,存儲(chǔ)在私服中的RELEASE倉(cāng)庫(kù)中。SNAPSHOT(快照版本):功能不穩(wěn)定、尚處于開(kāi)發(fā)中的版本,即快照版本,存儲(chǔ)在私服的SNAPSHOT倉(cāng)庫(kù)中。
1.設(shè)置私服的訪問(wèn)用戶名和密碼(maven配置文件settings.xml中的servers中配置)
2.IDEA的maven工程的pom文件中配置上傳地址,在聚合工程中進(jìn)行配置即可
3.設(shè)置私服依賴下載的倉(cāng)庫(kù)組地址(settings.xml中的mirrors),如果配置過(guò)阿里云,需要直接替換掉
?
4.profile中的配置?,指定這兩個(gè)版本都能從配置的倉(cāng)庫(kù)組中下載,因?yàn)槟J(rèn)情況下不穩(wěn)定的版本不允許從私服中下載。
5.執(zhí)行deploy生命周期
柚子快報(bào)激活碼778899分享:Java Web-Maven
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。