下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
自動(dòng)化構(gòu)建工具M(jìn)aven(二)自動(dòng)化工具系列|JAVA架構(gòu)師課程主講老師Tank·Java行業(yè)十年經(jīng)驗(yàn)·曾就職于凡客、飛牛、順豐等·負(fù)責(zé)應(yīng)用架構(gòu)設(shè)計(jì),核心代碼研發(fā)·在分布式、多并發(fā)、通信等方面具有豐富的經(jīng)驗(yàn)Maven的核心概念快速入門實(shí)戰(zhàn)掌握maven大綱Maven核心概念Maven能夠?qū)崿F(xiàn)自動(dòng)化構(gòu)建和依賴管理與內(nèi)部機(jī)制密不可分,想掌握Maven為什么能自動(dòng)化構(gòu)建和實(shí)現(xiàn)依賴管理,必須了解Maven的九個(gè)核心概念1POM2約定的目錄機(jī)構(gòu)3坐標(biāo)4依賴5倉庫6生命周期7插件和目標(biāo)8繼承9聚合使用maven新建一個(gè)項(xiàng)目使用Maven命令創(chuàng)建Java項(xiàng)目cd到要?jiǎng)?chuàng)建Java項(xiàng)目的文件夾F:>mvnarchetype:generate.dongnao-DartifactId=test2-DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false使用maven-archetype-quickstart模板創(chuàng)建
Java項(xiàng)目。如果忽視
archetypeArtifactId
選項(xiàng),所有Maven模板列表將列出maven-archetype-webapp創(chuàng)建web工程POMPOM(ProjectObjectModel):項(xiàng)目對(duì)象模型。將Java工程的相關(guān)信息封裝為對(duì)象作為便于操作和管理的模型。類比JavaOOP:在java中一切皆為對(duì)象,包含屬性和方法(行為),它大大地降低了軟件開發(fā)的難度,使編程就像搭積木一樣簡(jiǎn)單。它是Maven中工作的基本單位,這是一個(gè)XML文件。學(xué)習(xí)Maven就是學(xué)習(xí)pom.xml文件中的配置,pom.xml文件用來包含各種配置信息,POM也包含了目標(biāo)和插件。在執(zhí)行任務(wù)或目標(biāo)時(shí),Maven會(huì)使用當(dāng)前目錄中的POM,讀取POM得到所需要的配置信息,然后執(zhí)行目標(biāo)。超級(jí)POM:所有的POM繼承自父類,這個(gè)基礎(chǔ)的POM被稱為超級(jí)POM。約定的目錄結(jié)構(gòu)約定的目錄結(jié)構(gòu)工程名源碼目錄主程序目錄Java源文件目錄資源文件目錄測(cè)試程序目錄編譯結(jié)果目錄Maven核心配置文件約定的目錄結(jié)構(gòu)為什么需要約定的目錄結(jié)構(gòu) maven負(fù)責(zé)我們項(xiàng)目的自動(dòng)化構(gòu)建,以編譯為例,maven想要自動(dòng)編譯,那么必須知道java源文件保存的位置
tip:我們?cè)陂_發(fā)中如果需要讓第三方工具或框架知道我們自己創(chuàng)建的資源文件在哪,那么基本上就是兩種方式: 1以配置的方式告訴工具或者框架 springapplicationContext.xml 2遵守約定 perties
約定配置編碼:簡(jiǎn)化開發(fā)
架構(gòu)框架原始
意思就是能用配置解決的問題就不編碼,能基于約定的就不進(jìn)行配置。而Maven正是因?yàn)橹付颂囟ㄎ募4娴哪夸洸拍軌驅(qū)ξ覀兊腏ava工程進(jìn)行自動(dòng)化構(gòu)建。常用maven命令mvnclean 清理target
mvncompile 編譯主程序mvnpile 編譯測(cè)試程序mvntest 執(zhí)行測(cè)試程序
mvnpackage 打包mvninstall 將打包的文件安裝到本地倉庫mvndeploy 將打包的文件發(fā)布到本地倉庫和遠(yuǎn)程倉庫tips:執(zhí)行與構(gòu)建過程相關(guān)的maven命令,必須進(jìn)入pom.xml所在的目錄生命周期理解什么是生命周期
開發(fā)項(xiàng)目的時(shí)候,不斷地在編譯、測(cè)試、打包、部署等過程,maven的生命周期就是對(duì)所有構(gòu)建過程抽象與統(tǒng)一,生命周期包含項(xiàng)目的清理、初始化、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署、站點(diǎn)生成等幾乎所有的過程。
Maven生命周期定義了各個(gè)構(gòu)建環(huán)節(jié)的執(zhí)行順序,Maven自動(dòng)化的執(zhí)行構(gòu)建命令的基石。tips:生命周期類比為java設(shè)計(jì)模式之模版方法模式abstract父類具體方法生命周期的種類了解提供的幾種生命周期Maven有三套相互獨(dú)立的生命周期,分別是: 1CleanLifecycle 在進(jìn)行構(gòu)建之前進(jìn)行一些清理工作。 2DefaultLifecycle 構(gòu)建的核心部分,編譯,測(cè)試,打包,安裝,部署等等。 3SiteLifecycle 生成項(xiàng)目報(bào)告,站點(diǎn),發(fā)布站點(diǎn)。它們是相互獨(dú)立的,你可以調(diào)用clean來清理工作目錄,僅僅調(diào)用site來生成站點(diǎn)。也可以直接運(yùn)行mvncleaninstallsite運(yùn)行所有這三套生命周期。每套生命周期都由一組階段(Phase)組成,我們平時(shí)在命令行輸入的命令總會(huì)對(duì)應(yīng)于一個(gè)特定的階段。
tip:階段可以類比為java設(shè)計(jì)模式之模版方法模式abstract父類抽象方法生命周期種類了解Clean生命周期Clean生命周期一共包含了三個(gè)階段: 1pre-clean 執(zhí)行一些需要在clean之前完成的工作 2clean 移除所有上一次構(gòu)建生成的文件 3post-clean 執(zhí)行一些需要在clean之后立刻完成的工作生命周期種類詳解Default生命周期Default生命周期是Maven生命周期中最重要的一個(gè),絕大部分工作都發(fā)生在這個(gè)生命周期中。解釋一些比較重要和常用的階段:cess-resources 復(fù)制并處理資源文件,至目標(biāo)目錄,準(zhǔn)備打包。Compile 編譯項(xiàng)目的源代碼。............process-test-resources 復(fù)制并處理資源文件,至目標(biāo)測(cè)試目錄。pile 編譯測(cè)試源代碼。............test 使用單元測(cè)試框架運(yùn)行測(cè)試,這些測(cè)試代碼不會(huì)被打包或部署。............ package 接受編譯好的代碼,打包成可發(fā)布的格式,如JAR。............Install 將包安裝至本地倉庫,以讓其它項(xiàng)目依賴。Deploy 將最終的包復(fù)制到遠(yuǎn)程的倉庫,以讓其它開發(fā)人員與項(xiàng)目共享或部署到服務(wù)器上運(yùn)行。生命周期特點(diǎn)1maven的核心程序只定義了抽象的生命周期2各個(gè)構(gòu)建環(huán)節(jié)有固定的順序,必須按照順序來執(zhí)行3不論執(zhí)行生命周期的那一個(gè)階段,都是從生命周期最初的位置開始執(zhí)行插件什么是插件Maven的核心僅僅定義了抽象的生命周期,那么具體的任務(wù)是由誰實(shí)現(xiàn)的?
具體的任務(wù)都是由插件實(shí)現(xiàn)tips:插件類比為java設(shè)計(jì)模式之模版方法模式繼承abstract父類的子類,實(shí)現(xiàn)抽象方法(某個(gè)階段),做具體的事情插件的目標(biāo)1生命周期各個(gè)階段僅僅定義要執(zhí)行什么任務(wù)2Maven的生命周期與插件目標(biāo)相互綁定,以完成某個(gè)具體的構(gòu)建任務(wù)3每個(gè)插件都能實(shí)現(xiàn)多個(gè)功能,每個(gè)功能就是一個(gè)插件目標(biāo)生命周期階段插件目標(biāo)插件compilecompilepile-pluginpilepilepile-plugintips:可以將目標(biāo)看作調(diào)用插件功能命令生命周期執(zhí)行結(jié)果mvncompilemvntest實(shí)戰(zhàn)進(jìn)階隨著項(xiàng)目越來越大,我們需要將項(xiàng)目拆分成多個(gè)模塊: 1多個(gè)模塊之間如何調(diào)用和訪問呢? 2多個(gè)模塊之間的復(fù)雜jar包關(guān)系又該如何管理呢?持久層模塊邏輯層模塊控制層模塊………電商mall依賴什么是依賴當(dāng)Ajar包用到了Bjar包中的某些類時(shí),A就對(duì)B產(chǎn)生了依賴。為什么需要依賴?如果不用依賴,我們需要將上面的包全部收到導(dǎo)入,在maven中只需要在pom.xml文件中配置dependency并可引用jar包 <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <scope>compile</scope> </dependency> 依賴信息中除了目標(biāo)jar包的坐標(biāo)還有一個(gè)scope設(shè)置,這是依賴的范圍。依賴的范圍有幾個(gè)可選值,compile、test、provided、runtime、system等我們用得到的是:compile、test、provided三個(gè)。運(yùn)行時(shí)依賴范圍(runtime),使用該依賴范圍的maven依賴,只對(duì)測(cè)試和運(yùn)行的classpath有效,對(duì)編譯的classpath無效,典型例子就是JDBC的驅(qū)動(dòng)實(shí)現(xiàn),項(xiàng)目主代碼編譯的時(shí)候只需要JDK提供的JDBC接口,只有在測(cè)試和運(yùn)行的時(shí)候才需要實(shí)現(xiàn)上述接口的具體JDBC驅(qū)動(dòng)。系統(tǒng)依賴范圍(system),系統(tǒng)依賴范圍必須通過配置systemPath元素來顯示指定依賴文件的路徑,此類依賴不是由maven倉庫解析的,而且往往與本機(jī)系統(tǒng)綁定,可能造成構(gòu)件的不可移植,因此謹(jǐn)慎使用依賴的范圍從項(xiàng)目結(jié)構(gòu)角度理解compile和test的區(qū)別依賴的范圍持久層模塊test測(cè)試程序main主程序Compile的依賴test的依賴依賴的范圍從開發(fā)和運(yùn)行這兩個(gè)不同階段理解compile和provided的區(qū)別持久層模塊開發(fā)打包部署運(yùn)行compile的依賴provided的依賴Servlet容器Servlet-api依賴范圍總結(jié)有效性總結(jié)compiletestprovidedmain主程序√×√Test測(cè)試程序√√√打包部署√××依賴的傳遞性controller模塊依賴service模塊,service模塊依賴repository模塊,那么controller模塊也能使用repository模塊;并且repository模塊依賴的jar包也會(huì)傳遞到service和controller模塊模塊依賴的范圍對(duì)controller可見性controllerservicerepositorycompile√…..test×……provided×1可以傳遞的依賴不必要在每個(gè)模塊中都重復(fù)聲明(如模塊,jar包)2非compile范圍的依賴不能傳遞,所以需要在各個(gè)模塊中聲明依賴為什么需要依賴的排除repository模塊引入了一個(gè)依賴是dubbo,而dubbo又依賴了commons-logging,因?yàn)橐蕾嚨膫鬟f性將dubbo依賴的commons-logging引入repository模塊,但是個(gè)別情況下commons-logging有可能是一個(gè)不穩(wěn)定版,或?qū)Ξ?dāng)前模塊有不良影響,這時(shí)我們可以在引入dubbo的時(shí)候?qū)ommons-logging排除依賴的排除實(shí)現(xiàn)依賴的排除多依賴過濾單依賴過濾依賴jar包的排除實(shí)現(xiàn)依賴的排除依賴模塊的排除Service模塊pom.xml依賴的原則service模塊引入了repository模塊,因?yàn)橐蕾嚨膫鬟f性會(huì)講repository依賴的jar包導(dǎo)入到當(dāng)前模塊,但是service模塊引用的是最新版本的commons-logging,因?yàn)橐蕾嚨膫鬟f性,controller模塊就有兩個(gè)commons-logging版本,怎能解決呢?這種情況就需要依靠maven依賴的原則,來解決jar包的沖突依賴的原則分兩種 1路徑最短者優(yōu)先 2路徑相同時(shí)先聲明者優(yōu)先依賴的原則路徑最短者優(yōu)先controller模塊service模塊repository模塊commons-logging1.2commons-logging1.1commons-logging1.2依賴的原則路徑相同時(shí)先聲明者優(yōu)先controller模塊service模塊commons-logging1.2commons-logging1.1其他service模塊tips:聲明的先后順序指的是dependency標(biāo)簽配置的先后順序...........依賴的統(tǒng)一管理一般同一個(gè)框架的jar包用的都是對(duì)應(yīng)相同的版本號(hào),想要統(tǒng)一升級(jí),怎么辦?這個(gè)時(shí)候就用到依賴的統(tǒng)一管理,可以將jar包的版本信息統(tǒng)一抽取出來,以后框架升級(jí)只需修改抽取出來的版本信息即可1在<properties>標(biāo)簽內(nèi)使用自定義的標(biāo)簽統(tǒng)一聲明版本號(hào)2在需要用的同一版本的位置,使用${自定義標(biāo)簽}引用抽取出來的版本信息即可繼承了解如果項(xiàng)目中各個(gè)模塊各自使用的jar包版本不統(tǒng)一(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省科創(chuàng)集團(tuán)有限公司招聘(33人)考前自測(cè)高頻考點(diǎn)模擬試題附答案
- 2025年哈爾濱道里區(qū)安靜社區(qū)衛(wèi)生服務(wù)中心招聘1人考試歷年真題匯編附答案
- 2025廣東廣州市市場(chǎng)監(jiān)督管理局直屬事業(yè)單位引進(jìn)急需專業(yè)人才23人備考題庫附答案
- 2025年河北滄州泊頭市泊控產(chǎn)業(yè)發(fā)展集團(tuán)有限公司公開招聘工作筆試備考試題附答案
- 2025年山東省土地發(fā)展集團(tuán)有限公司權(quán)屬公司招聘(23人)考前自測(cè)高頻考點(diǎn)模擬試題附答案
- 2025江蘇南通蘇錫通科技產(chǎn)業(yè)園區(qū)招商服務(wù)有限公司招聘20人公考前自測(cè)高頻考點(diǎn)模擬試題附答案
- AI賦能教育評(píng)估:應(yīng)用場(chǎng)景、實(shí)踐案例與實(shí)施路徑
- 2026重慶兩江新區(qū)人民醫(yī)院勞務(wù)派遣崗位招聘4人筆試模擬試題及答案解析
- 2026云南保山電力公司招聘50人筆試參考題庫及答案解析
- 2026福建福建宏業(yè)交通服務(wù)有限公司招聘1人筆試模擬試題及答案解析
- GB/T 43824-2024村鎮(zhèn)供水工程技術(shù)規(guī)范
- DB3402-T 57-2023 醫(yī)院物業(yè)服務(wù)規(guī)范
- 腰椎間盤突出患者術(shù)后護(hù)理課件
- 醫(yī)院護(hù)理培訓(xùn)課件:《高壓氧臨床的適應(yīng)癥》
- 校服采購?fù)稑?biāo)方案
- 固定修復(fù)基礎(chǔ)理論-固位原理(口腔固定修復(fù)工藝課件)
- 合同能源管理培訓(xùn)講義
- 剪映電腦版使用說明教程
- 腱鞘囊腫日間手術(shù)
- 標(biāo)準(zhǔn)化預(yù)制梁場(chǎng)驗(yàn)收表
- JJG 30-2012通用卡尺
評(píng)論
0/150
提交評(píng)論