maven(平臺組內(nèi)部分享二)

3.示例

1)創(chuàng)建項目

mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.yy.testweb1 -DartifactId=testweb1 -DarchetypeArtifactId=maven-archetype-quickstart -DpackageName=com.yy.testweb1 -Dversion=1.0

archetype:generate 目標傳入了 version參數(shù)。它覆寫了默認值 1.0-SNAPSHOT

2)添加組織月腋,法律和開發(fā)人員信息

3)項目依賴

如果你需要找出 classpath 中有什么北启,你可以使用 Maven Dependency 插 件來打印出已解決依賴的列表

mvn dependency:resolve

如果你想知道你項目的整個依賴樹

mvn?dependency:tree

如果想要查看完整的依賴蹤跡吞加,包含那些因為沖突或者其它原因而被拒絕引入的構(gòu)件

mvn install -X? ?(-X開啟調(diào)試輸出感憾,打印debug日志)

依賴一個包搁宾,其中scope依賴范圍代表侧漓,在一般的編譯和運行時都不需要罚舱,它們只有在測試編譯和測試運行階段可用培愁。

?<dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version><scope>test</scope></dependency>

4)單元測試

mvn test

test階段是 Maven 生命周期中常規(guī)的一部分著摔,如果想要運行到 test階段為止的所有生命周期階段,運行 mvn test定续。

如果你的測試失敗了谍咆,你可以去/target/surefire-reports目錄查看,里面有你單元測試生成的異常堆棧信息和錯誤信息私股。如果想運行系統(tǒng)中的test并且忽略掉失敗的則可以使用:

mvn test -Dmaven.test.failure.ignore=true

運行 mvn package或者 mvn install的時候也會運行到test摹察,如果不想運行test,則添加 -Dmaven.test.skip=true (mvn package?-Dmaven.test.skip=true)另外package是把jar打到本項目的target下倡鲸,而install時把target下的jar安裝到本地倉庫供嚎,供其他項目使用。deploy 是上傳到遠程倉庫峭状。

5)配置插件

創(chuàng)建web項目:mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.yy.testweb2 -DartifactId=testweb2 -DarchetypeArtifactId=maven-archetype-webapp

增加插件克滴,定義打包名稱,注意此處插件開發(fā)者提供了默認值宁炫,如果需要自定義一些屬性偿曙,則需加入configuration元素

運行插件啟動項目 :mvn jetty:run

訪問:http://localhost:8080/testweb2/

6)多模塊構(gòu)建

多模塊時需要提出單獨parent項目,它僅僅是一個引用其它Maven項目的POM羔巢,并且打包結(jié)果為pom共子項目引用望忆。

當Maven執(zhí)行一個帶有子模塊的項目的時候,Maven首先載入父POM竿秆,然后定位所有的子模塊POM启摄。Maven然后將所有這些項目的POM放入到一個稱為Maven 反應(yīng)堆(Reactor)的東西中,由它負責分析模塊之間的依賴關(guān)系幽钢。這個反應(yīng)堆處理組件的排序歉备,以確保相互獨立的模塊能以適當?shù)捻樞虮痪幾g和安裝。

7)pom優(yōu)化

優(yōu)化一個多模塊項目的POM匪燕,尋找一個POM中的重復(fù)蕾羊,或者多個兄弟POM中的重復(fù)喧笔。企業(yè)級項目中創(chuàng)建的不同POM,就會注意到幾種重復(fù)模式龟再。第一種重復(fù)模式是:一些依賴如spring和在多個模塊中被聲明书闸。第二種重復(fù)模式是:有一些依賴是關(guān)聯(lián)的,共享同樣的版本利凑,比如log4j2浆劲。

第一種重復(fù)使用dependencyManagement解決,將共同依賴放入parent的dependencyManagement中哀澈,子級pom去掉依賴版本和排除配置牌借。

第二種重復(fù)在父pom中增加properties,設(shè)置版本割按。


優(yōu)化插件膨报,使用dependencyManagement在父pom中定義插件,在子pom中直接使用哲虾。

使用Maven Dependency插件對pom進行優(yōu)化丙躏,能夠發(fā)現(xiàn)對于依賴的直接引用

mvn dependency:analyze??

Used undeclared dependencies

該列表列出的是程序代碼直接用到的、但并沒在pom.xml里定義的依賴項束凑。

Unused declared dependencies

該列表列出的是程序代碼沒用到的晒旅、但在pom.xml里定義的依賴項。注意汪诉,該列表可能不準確废恋,因為程序代碼可能使用了反射技術(shù),在運行時需要這些jar包存在扒寄。

mvn dependency:tree? 依賴樹

只關(guān)心log4j依賴

mvn dependency:tree -Dincludes=log4j:log4j或mvn dependency:tree -Dincludes=*:log4j

一個依賴項可能來自多處鱼鼓,可加上"-Dverbose"參數(shù)進行查看

mvn dependency:tree -Dincludes=*:spring-core -Dverbose

使用maven-dependency-plugin對pom.xml文件進行優(yōu)化

優(yōu)化的目標是不多不少地定義依賴項。不僅依賴項的個數(shù)要不多不少该编,而且依賴項的作用域也要恰到好處迄本。其驗證方法是:

1.檢查是否少定義了依賴項,即執(zhí)行mvn clean dependency:analyze后课竣,應(yīng)沒有Used undeclared dependencies列表嘉赎。Unused declared dependencies列表中的依賴項需人工判斷是否有必要存在,若無必要則請刪除于樟。特別地公条,對于其中的compile和test依賴項,如果不需要或能被其它依賴項傳遞帶出則請刪除迂曲。檢查方法是:先刪除該依賴項重試靶橱。如果重試成功則保持刪除,如果不成功則改為test再重試,如果重試不成功則改為compile关霸。如果你熟悉dependency:tree命令传黄,你也可以從該命令的輸出直接看到預(yù)期的結(jié)果。既然我們的代碼沒用到那個依賴項谒拴,為什么刪除該依賴項可能導(dǎo)致編譯不通過呢尝江?這可能的原因是我們所依賴的依賴項其本身又依賴了其它依賴項涉波,但它們之間是provided或optional關(guān)系英上,導(dǎo)致不傳遞依賴。

2.檢查是否多定義了依賴項啤覆,并檢查作用域是否定大了苍日,即執(zhí)行mvn clean dependency:analyze -Dmaven.test.skip=true后,應(yīng)沒有Used undeclared dependencies列表窗声。上面第一步通過后相恃,這里肯定不會出現(xiàn)該列表。Unused declared dependencies列表中可以含有任意作用域的依賴項笨觅。我們需要去檢查能否縮小作用域的范圍拦耐,特別地,需要重點檢查compile作用域是否能縮小到test见剩、provided杀糯、runtime和system,如果能則改之苍苞。

3.以上步驟中如果修改了pom.xml文件固翰,則請回到第一步重新開始驗證,以保證優(yōu)化前能編譯通過羹呵。

4.執(zhí)行mvn clean test命令做進一步驗證骂际。

https://www.cnblogs.com/yang-wu/p/3262499.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冈欢,隨后出現(xiàn)的幾起案子歉铝,更是在濱河造成了極大的恐慌,老刑警劉巖凑耻,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件太示,死亡現(xiàn)場離奇詭異,居然都是意外死亡拳话,警方通過查閱死者的電腦和手機先匪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弃衍,“玉大人呀非,你說我怎么就攤上這事。” “怎么了岸裙?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵猖败,是天一觀的道長。 經(jīng)常有香客問我降允,道長恩闻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任剧董,我火速辦了婚禮幢尚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翅楼。我一直安慰自己尉剩,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布毅臊。 她就那樣靜靜地躺著理茎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪管嬉。 梳的紋絲不亂的頭發(fā)上皂林,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音蚯撩,去河邊找鬼础倍。 笑死,一個胖子當著我的面吹牛求厕,可吹牛的內(nèi)容都是我干的著隆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呀癣,長吁一口氣:“原來是場噩夢啊……” “哼美浦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起项栏,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浦辨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沼沈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流酬,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年列另,在試婚紗的時候發(fā)現(xiàn)自己被綠了芽腾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡页衙,死狀恐怖摊滔,靈堂內(nèi)的尸體忽然破棺而出阴绢,到底是詐尸還是另有隱情,我是刑警寧澤艰躺,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布呻袭,位于F島的核電站,受9級特大地震影響腺兴,放射性物質(zhì)發(fā)生泄漏左电。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一页响、第九天 我趴在偏房一處隱蔽的房頂上張望篓足。 院中可真熱鬧,春花似錦拘泞、人聲如沸纷纫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烟瞧,卻和暖如春诗鸭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背参滴。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工强岸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砾赔。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓蝌箍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暴心。 傳聞我的和親對象是個殘疾皇子妓盲,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容