摘要:文件項(xiàng)目隸屬的實(shí)際項(xiàng)目名實(shí)際項(xiàng)目中的一個(gè)項(xiàng)目模塊名稱版本號(hào)當(dāng)前項(xiàng)目打包的方式,默認(rèn)為以上的配置會(huì)獲得一個(gè)格式的包用于定義構(gòu)建輸出的一些附屬的構(gòu)建。
pom.xml文件
org.son.nexus //項(xiàng)目隸屬的實(shí)際項(xiàng)目名nexus-indexer //實(shí)際項(xiàng)目中的一個(gè)maven項(xiàng)目模塊名稱2.0.0 //版本號(hào)jar //當(dāng)前maven項(xiàng)目打包的方式,默認(rèn)為jar
以上的配置會(huì)獲得一個(gè)
- . 格式的包//nexus-indexer-2.0.0.jar
jar包在倉庫中的路徑規(guī)律:groupId/artifactId/version/groupId-version
依賴倉庫groupId、artifactId、version為基本坐標(biāo)
type為依賴類型,默認(rèn)為jar
scope為依賴范圍
compile:編譯,測(cè)試,運(yùn)行三種classpath都有效
test:只對(duì)測(cè)試有效
provided:編譯和測(cè)試有效
runtime:測(cè)試和運(yùn)行有效
system:系統(tǒng)依賴,依賴的包是從計(jì)算機(jī)本地導(dǎo)入,與systemPath配合使用
?
${java.home}/lib/rt.jar ?
system
maven默認(rèn)就是支持的。
什么是傳遞性依賴?
比如:現(xiàn)在要導(dǎo)入A.jar包,但A.jar有依賴于B.jar,在maven中就會(huì)默認(rèn)導(dǎo)入B.jar,而不需要手動(dòng)去導(dǎo)入。
scope最好設(shè)為compile
傳遞性依賴存在一個(gè)問題:工程中存在兩個(gè)jar分別依賴的是B.jar的不同版本jar包,就會(huì)出現(xiàn)錯(cuò)誤。
optional:可選依賴,true 不會(huì)傳遞,false會(huì)傳遞(默認(rèn))
mysql mysql-connector-java 5.1.10 true
當(dāng)其他項(xiàng)目C依賴B項(xiàng)目時(shí),mysql-connector-java的依賴不會(huì)發(fā)生傳遞給C
優(yōu)點(diǎn):
減少?zèng)_突,不用的功能不傳遞
一個(gè)jar應(yīng)該只有 一個(gè)職責(zé)原則
exclusions排除依賴用于替換某個(gè) 依賴中的依賴包作用
com.juv project-B 1.0.0 //可以有多個(gè) com.juv project-C com.juv project-B 1.1.0
該例子的意思:不想使用project-B中版本的project-C依賴包,而將其環(huán)衛(wèi)1.1.0的project-C包
歸類依賴場(chǎng)景:存在一群版本號(hào)一致的依賴,想通過一個(gè)統(tǒng)一的配置,將其統(tǒng)一配置和修改
2.5.6
調(diào)用方式
部署至遠(yuǎn)程倉庫${spring}
修改工程中的pom文件
.... .... //發(fā)布版本構(gòu)件的倉庫 //遠(yuǎn)程倉庫的唯一標(biāo)識(shí) //自定義 //該倉庫地址 //快照版本的設(shè)置
如果需要認(rèn)證,則在setting.xml文件中增加一個(gè)
在配置完成后,執(zhí)行mvn clean deploy 就會(huì)根據(jù)當(dāng)前版本類型,發(fā)布到相應(yīng)的倉庫中
快照版本
快照不是正式版本,當(dāng)設(shè)為帶有SNAPSHOT的version時(shí),即為快照版本,每次向倉庫部署是,會(huì)自動(dòng)打上時(shí)間戳,其他引用快照相同版本時(shí)會(huì)自動(dòng)下載更新
例如:2.1-SNAPSHOT時(shí),則會(huì)下載2.1-20091214之類的構(gòu)件
在maven本地倉庫的groupId/artifactId/version文件路徑下會(huì)存在maven-metadata.xml文件,會(huì)記錄版本信息
maven生命周期com.android.support multidex 1.0.0 1.0.0 1.0.1 20141209014044
maven的生命周期是抽象的,其實(shí)際行為都是由插件來完成的。
maven的生命周期是不做任何實(shí)際工作,實(shí)際任務(wù)都由插件完成。
maven具有三個(gè)獨(dú)立的生命周期:clean、defeat、site
1、clean生命周期:清理項(xiàng)目,包含三個(gè)phase。
1)pre-clean:執(zhí)行清理前需要完成的工作
2)clean:清理上一次構(gòu)建生成的文件
3)post-clean:執(zhí)行清理后需要完成的工作
2、default生命周期:構(gòu)建項(xiàng)目,重要的phase如下。
1)validate:驗(yàn)證工程是否正確,所有需要的資源是否可用。
2)compile:編譯項(xiàng)目的源代碼。
3)test:使用合適的單元測(cè)試框架來測(cè)試已編譯的源代碼。這些測(cè)試不需要已打包和布署。
4)Package:把已編譯的代碼打包成可發(fā)布的格式,比如jar。
5)integration-test:如有需要,將包處理和發(fā)布到一個(gè)能夠進(jìn)行集成測(cè)試的環(huán)境。
6)verify:運(yùn)行所有檢查,驗(yàn)證包是否有效且達(dá)到質(zhì)量標(biāo)準(zhǔn)。
7)install:把包安裝到maven本地倉庫,可以被其他工程作為依賴來使用。
8)Deploy:在集成或者發(fā)布環(huán)境下執(zhí)行,將最終版本的包拷貝到遠(yuǎn)程的repository,使得其他的開發(fā)者或者工程可以共享。
3、site生命周期:建立和發(fā)布項(xiàng)目站點(diǎn),phase如下
1)pre-site:生成項(xiàng)目站點(diǎn)之前需要完成的工作
2)site:生成項(xiàng)目站點(diǎn)文檔
3)post-site:生成項(xiàng)目站點(diǎn)之后需要完成的工作
4)site-deploy:將項(xiàng)目站點(diǎn)發(fā)布到服務(wù)器
命令行輸入:$mvn clean 其實(shí)調(diào)用的是clean生命周期的clean階段,執(zhí)行了pre-clean和clean
而這些命令其實(shí)是由插件提供功能的。
自定義綁定插件org.apache.maven.plugins //maven官方,官方的可以省略該標(biāo)簽maven-source-plugin //插件2.1.1 //沒有version時(shí),會(huì)默認(rèn)下載最新的release版本//配置執(zhí)行n個(gè)任務(wù) attach-sources //可以任意verify //綁定到verify生命周期,在此時(shí)才會(huì)起作用jar-no-fork //啟用該插件的jar-no-fork功能
因?yàn)橐粋€(gè)插件可能存在多個(gè)功能,但我們并不一定所有的功能都需要,所以設(shè)定goal標(biāo)簽,表示我們要實(shí)現(xiàn)的功能。
插件配置命令行配置:$mvn install -Dt 插件相關(guān)參數(shù) //適用于當(dāng)每次運(yùn)行時(shí),這個(gè)插件的配置都會(huì)變的情況
pom中全局配置:
聚合(多模塊)maven-compiler-plugin 3.1 //jdk1.7 1.7 //編譯后jdk1.7
意義:一次構(gòu)建所有想要構(gòu)建的項(xiàng)目
4.0.0 org.son.nexus nexus-indexer 2.0.0 pom //本身也是一個(gè)maven工程account-email //想要構(gòu)建的項(xiàng)目,這里寫的是當(dāng)前pom文件下的相對(duì)路徑地址account-persilist
聚合pom文件的packaging標(biāo)簽一定要是pom,其工程就只是一個(gè)pom文件,沒有其他的實(shí)現(xiàn)代碼
一般來說模塊處的目錄名應(yīng)與其artifactId一致
聚合模塊與其他模塊的目錄結(jié)構(gòu)并非一定要父子關(guān)系
繼承父pom
4.0.0 org.son.nexus nexus-indexer 2.0.0 pom //本身也是一個(gè)maven工程com.juv project-B 1.0.0 com.juv project-C com.juv project-B 1.1.0
父pom的packaging也是pom
子pom
4.0.0 org.son.nexus nexus-B 2.0.0 jar org.son.nexus nexus-C 1.0.0-SNAPSHOT ../pom.xml //相對(duì)路徑
子pom的packaging則不一定要是pom,但一定有parent標(biāo)簽
子類的groupId和version也可以繼承與父pom文件
作用:當(dāng)子類不需要父pom中的某些依賴的時(shí),就可以使用。
父pom
spring-core org.springframework 3.1.1.RELEASE
被
子pom
spring-core org.springframework
可以省略version等其他配置,因?yàn)楦竝om中已經(jīng)配置過了
若想獲取父pom中所有的dependencyManagement中的構(gòu)件配置,則在子pom中如下配置
account-parent com.juvenxu.accout 3.1.1.RELEASE pom import
配置父pom的一些信息
插件管理父pom中的插件不想在子類中默認(rèn)使用
跟依賴管理一樣,被
一個(gè)pom文件既可以是聚合也可以是父pom
反應(yīng)堆在聚合構(gòu)建時(shí),構(gòu)件模塊的先后順序的排列。
按書寫的先后順序進(jìn)行構(gòu)建
加料區(qū)如果同一個(gè)項(xiàng)目中存在多個(gè)模塊相互依賴時(shí)候,version和groupId可以使用${project.groupId}(當(dāng)前模塊的groupId)和${project.verison},這樣就不用不斷的更改了。
以上です(Ending)
ありがどう(Thank You)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65881.html
摘要:首先進(jìn)入到工程文件下進(jìn)行這個(gè)項(xiàng)目,完成后會(huì)打包成并加入到本地倉庫中,下面我們只需要根據(jù)本地倉庫中的包去創(chuàng)建我們事先定義好的項(xiàng)目框架,執(zhí)行命令后會(huì)穿件如下的項(xiàng)目結(jié)構(gòu)好了現(xiàn)在可以進(jìn)入到中去執(zhí)行運(yùn)行測(cè)試用例。 此篇主要來談?wù)刴aven自定義archetype,maven是一個(gè)很好的代碼構(gòu)建工具,采用約定優(yōu)先于配置的原則進(jìn)行項(xiàng)目管理,相信很多的java開發(fā)者應(yīng)該都了解maven并可能在工作當(dāng)中...
摘要:針對(duì)您的個(gè)人需要,有一些設(shè)置和任務(wù)可用來調(diào)整服務(wù)器,讓我們來探索它們默認(rèn)端口號(hào)默認(rèn)情況下,服務(wù)器在端口上啟動(dòng)。 開發(fā)環(huán)境下運(yùn)行Lagom1.開發(fā)環(huán)境 Lagom的sbt或者maven項(xiàng)目是可以基于開發(fā)的環(huán)境允許使用單個(gè)命令來運(yùn)行任意數(shù)量的服務(wù)。 當(dāng)代碼更改時(shí),同樣的命令也會(huì)重新加載服務(wù),這樣你就不用手動(dòng)重啟了,您可以繼續(xù)關(guān)注您的工作,并讓Lagom進(jìn)行編譯和重新加載。 (1)運(yùn)行Mav...
摘要:不同的應(yīng)用場(chǎng)景,不同的架構(gòu),不同的需求,都會(huì)對(duì)優(yōu)化設(shè)置有不同要求。在這里我所記述的只是我自己在一些應(yīng)用中所設(shè)置的優(yōu)化項(xiàng),以備不時(shí)之需,并不是放之四海而皆準(zhǔn)的準(zhǔn)則。為了消除這些警告,還需要根治。 一千個(gè)人眼中就有一千個(gè)哈姆雷特?!獋挝鞣街V語 關(guān)于Tomcat的優(yōu)化點(diǎn)之多,我估計(jì)沒有上萬,也有成千。不同的應(yīng)用場(chǎng)景,不同的架構(gòu),不同的需求,都會(huì)對(duì)優(yōu)化設(shè)置有不同要求。在這里我所記述的只是我...
摘要:有一些設(shè)置和任務(wù)可以為您喜歡的嵌入式服務(wù)定位器調(diào)整,讓我們來探索它們默認(rèn)的端口號(hào)在中,服務(wù)發(fā)現(xiàn)的端口號(hào)默認(rèn)的是但是這個(gè)端口是非常容易被其他的應(yīng)用所占用的。 開發(fā)環(huán)境下運(yùn)行Lagom1.開發(fā)環(huán)境 Lagom的sbt或者maven項(xiàng)目是可以基于開發(fā)的環(huán)境允許使用單個(gè)命令來運(yùn)行任意數(shù)量的服務(wù)。 當(dāng)代碼更改時(shí),同樣的命令也會(huì)重新加載服務(wù),這樣你就不用手動(dòng)重啟了,您可以繼續(xù)關(guān)注您的工作,并讓La...
閱讀 1465·2021-09-10 11:27
閱讀 2414·2019-08-30 15:53
閱讀 1333·2019-08-30 13:10
閱讀 2981·2019-08-30 11:09
閱讀 1092·2019-08-29 17:23
閱讀 672·2019-08-29 17:05
閱讀 2951·2019-08-29 15:10
閱讀 2349·2019-08-29 13:22