




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
01使不使用Maven仍然可以進(jìn)行B/S結(jié)構(gòu)項(xiàng)目的開發(fā)。從表述層、業(yè)務(wù)邏輯層到持久化層再到數(shù)據(jù)庫(kù)都有成解決方案——不使用Maven一樣可以開發(fā)項(xiàng)目啊?所以有必要通過(guò)企業(yè)開發(fā)中的實(shí)際需求來(lái)看一看哪些方面是現(xiàn)有技術(shù)的不足。添加第jar在今天的JavaEE開發(fā)領(lǐng)域,有大量的第框架和工具可以供使用。要使用這些jar包最簡(jiǎn)單的方法就是粘貼到WEB-INF下的lib下。但是這會(huì)導(dǎo)致每次創(chuàng)建一個(gè)新的工程就需要將jar包重復(fù)lib下,從而造成工作區(qū)中存在大量重復(fù)的文件。而使用Maven后每個(gè)jar包只在本地倉(cāng)庫(kù)中保存一份,需要jar包的工程只需要一個(gè)文本形式的jar包的——稱之為“坐標(biāo)。不僅極大的節(jié)約了空間,讓項(xiàng)目更輕巧,更避免了重復(fù)文件太多而造成的。jarjar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能夠正常工作,稱之為jarleupld-1.3.jars--2.0.1r包,lead包就不能正常工作。jarjar包,jarjar包不夠,那么現(xiàn)有的程序?qū)⒉荒苷9ぷ?。再進(jìn)一步,當(dāng)你的項(xiàng)目中需要用到上百個(gè)jar包時(shí),你還會(huì)人為工的逐一確認(rèn)它們依賴的其他jar包嗎?這簡(jiǎn)直是不可。而引入Maven后,Maven就可以替自動(dòng)的將當(dāng)前jar包所依賴的其他所有jar包全部導(dǎo)入進(jìn)來(lái),無(wú)需人工參與,節(jié)約了大量的時(shí)間和精力。用實(shí)際例子來(lái)說(shuō)明就是:通過(guò)Maven導(dǎo)入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar會(huì)被自動(dòng)導(dǎo)入,程序員不必了解這個(gè)依賴關(guān)系。jar包之間的jarjar包多了項(xiàng)目仍然無(wú)法正常工作,這就是jar包之間的。舉個(gè)例子:現(xiàn)在有三個(gè)工程MakeFriend、 o。MakeFriend依賴 oFriend依賴 o依賴log4j.1.2.17.jar, oFriend依賴log4j.1.2.14.jar。如下圖所示:MakeFriendlog4j.1.2.14.jarlog4j.1.2.17.jar使用Maven就可以自動(dòng)的處理jar包之間的問(wèn)題。因?yàn)镸aven中內(nèi)置了兩條依賴原則:最短路者優(yōu)先和先者優(yōu)先,上述問(wèn)題MakeFriend工程會(huì)自動(dòng)使用log4j.1.2.14.jar獲取第jarJavaEEjarjar包在其本身的官網(wǎng)上的獲取方式都不盡相同。jar包找遍互聯(lián)網(wǎng),身心俱疲,沒(méi)有經(jīng)歷過(guò)的人或許體會(huì)不到這種折磨。不僅如此,費(fèi)勁心血jar包里有的時(shí)候并沒(méi)有你需要的那個(gè)類,又或者又同名的類沒(méi)有你要的方法——以不規(guī)范的方式獲取jar包也往往是不規(guī)范的。使用Maven可以享受到一個(gè)完全規(guī)范的jar包管理體系你只需要在你的項(xiàng)目中以坐標(biāo)的方式依賴一個(gè)jar包,Maven就會(huì)自動(dòng)從倉(cāng)庫(kù)進(jìn)行并同時(shí)這個(gè)jar包所依賴的其他jar包——規(guī)范、完整、準(zhǔn)確!解決所有問(wèn)題!Tips:在這里順便說(shuō)一下,的規(guī)范幾乎可以說(shuō)成是程序員的最高信仰。如果沒(méi)有的規(guī)范,和其他技術(shù)格格不入最終受苦的是而任何一個(gè)領(lǐng)域的規(guī)范都能夠極大的降低程序員的工作難度,減少工作量。例如:USB接口可以外接各種設(shè)備,如果每個(gè)設(shè)備都有自己獨(dú)特的接口,那么不僅制造商需要隨著JavaEE項(xiàng)目的規(guī)模越來(lái)越龐大,開發(fā)團(tuán)隊(duì)的規(guī)模也與日俱增。一個(gè)項(xiàng)目上的團(tuán)隊(duì)持續(xù)開發(fā)很多年對(duì)于JavaEE項(xiàng)目來(lái)說(shuō)再正常不過(guò)。那么想象一下:幾百上千的人開發(fā)的項(xiàng)目是同一個(gè)Web工程。JavaWeb工程。那么工程拆分后又如何進(jìn)行互相調(diào)用和呢?這就需要用到Maven的依賴管理機(jī)制。大家請(qǐng)看的Survey項(xiàng)目拆分的情況:上層模塊依賴下層,所以下層模塊中定義的API都可以為上層所調(diào)用和,在實(shí)際生產(chǎn)環(huán)境中,項(xiàng)目規(guī)模增加到一定程度后,可能每個(gè)模塊都需要運(yùn)行在獨(dú)立的服務(wù)器上稱Maven。,如果上面的描述能夠使你認(rèn)識(shí)到使用Maven是重要,下面就來(lái)介紹一下Maven是什么Maven這個(gè)單詞的本意是:,內(nèi)行。讀音是['me?v(?)n]或['mevn],不要讀作“媽文”MavenJavaJavaEE開發(fā)的歷史上那么構(gòu)建呢Java大家都知道,Java是一門編譯型語(yǔ)言,.java擴(kuò)展名的源文件需要編譯成.class擴(kuò)展名的字節(jié)碼文件Java代碼想要執(zhí)行的話就必須經(jīng)過(guò)編譯得到對(duì)應(yīng)的.class文件。②Web當(dāng)需要通過(guò)瀏覽器Java程序時(shí)就必須將包含Java程序的Web工程編譯的結(jié)果“拿”到服務(wù)器上 下,并啟動(dòng)服務(wù)器才行。這個(gè)“拿”的過(guò)程叫部署??梢詫⑽淳幾g的Web工程比喻為一只生的雞,編譯好的Web工程是一只煮雞,編譯部署的過(guò)Web工程和其編譯結(jié)果 結(jié)構(gòu)對(duì)比見(jiàn)下圖在實(shí)際項(xiàng)目中整合第框架,Web工程中除了Java程序和JSP頁(yè)面、等靜態(tài)資源之外,還包括第框架的jar包以及各種各樣的配置文件。所有這些資源都必須按照正確的結(jié)構(gòu)部署到服務(wù)器上,Java③測(cè)試:針對(duì)項(xiàng)目中的關(guān)鍵點(diǎn)進(jìn)試,確保項(xiàng)目在迭發(fā)過(guò)程中關(guān)鍵點(diǎn)的正確性④報(bào)告:在每一次測(cè)試后以標(biāo)準(zhǔn)的格式記錄和展示⑤打包:將一個(gè)包含諸多文件的工程封裝為一個(gè)壓縮文件用于安裝或部署。Javajar包,Webwar包。Maven環(huán)境下特指將打包的結(jié)果——jarwar⑦部署:將打包的結(jié)果部署到倉(cāng)庫(kù)或?qū)ar包部署到服務(wù)器上運(yùn)行。。 搖搖頭,進(jìn)入IDE下午繼續(xù)工作。BUG很快被修正了,接著 有問(wèn)題了,回復(fù)了QA小組的郵件。一天就這樣過(guò)去了,明媚的陽(yáng)光化作了美麗的晚霞 卻覺(jué)得生活并不像晚霞那樣美好啊讓來(lái)梳理一下這一天中的工作內(nèi)從中發(fā)現(xiàn),的很大一部分時(shí)間花在了“編譯、打包、部署、測(cè)試”這些程式化的工作上面,能否將這些程式化的工作交給機(jī)器自動(dòng)完成呢?——當(dāng)然可以!這就是自動(dòng)化構(gòu)建Maven又是如何實(shí)現(xiàn)自動(dòng)化構(gòu)建的呢?簡(jiǎn)單的說(shuō)來(lái)就是它可以自動(dòng)的從構(gòu)建過(guò)程的起點(diǎn)一直執(zhí)行Maven概Maven之所以能夠?qū)崿F(xiàn)自動(dòng)化的構(gòu)建,和它的設(shè)計(jì)是緊密相關(guān)的。對(duì)Maven的學(xué)習(xí)就圍繞它的九個(gè)概念展開:②約定 結(jié)在這一節(jié)中來(lái)看看Maven程序的安裝和本地倉(cāng)庫(kù)的必要設(shè)置然后就可以編寫第一個(gè)①檢查JAVA_HOME環(huán)境變量。Maven是使用Java開發(fā)的,所以必須知道當(dāng)前系統(tǒng)環(huán)境中JDK的安 ②解壓Maven的程序?qū)pache-maven-3.2.2-bin.zip解壓到一個(gè)非中文無(wú)空格 下。例如ApacheMaven3.2.2(45f7c06d68e745d05611f7fd14efb6594181933e;2014-06-Mavenhome:D:\DevInstall\apache-maven-3.2.2\bin\..Javaversion:1.7.0_07,vendor:OracleCorporationJavahome:D:\DevInstall\jdk1.7.0_07\jreDefault ,platformencoding:OSname:"windows7",version:"6.1",arch:"amd64",family:Maven默認(rèn)的本地倉(cāng)庫(kù):~\.m2\repositoryTips:~表示當(dāng)前用戶的家Maven的程序并不包含具體功能,僅負(fù)責(zé)宏觀調(diào)度。具體功能由插件來(lái)完成。Maven程序行Maven的具體功能。為了解決這個(gè)問(wèn)題,可以將Maven的本地倉(cāng)庫(kù)指向一個(gè)在聯(lián)網(wǎng)情況下好的。解 Maven解 Mavenoo 第二步:創(chuàng)建Maven的配置文件<?xmlversion="1.0"<name>""publicclass o{publicStringsaypublicclass o{publicStringsayo(Stringreturnreturn"o}}package publicclass oTest{publicpackage publicclass oTest{publicvoid o= Stringresultso}} o項(xiàng)目(pom.xml②cmd中繼續(xù)錄入mvnclean命令,然后再次查看 變③cmd中錄入mvncleancompile命令,查看 變④cmd中錄入mvncleantest命令,查 變⑤cmd中錄入mvncleanpackage命令,查 變注意:運(yùn)行Maven命令時(shí)一定要進(jìn)入pom.xml文件所在 ProjectObjectModelJavaMaven工程的配置。可以說(shuō)學(xué)習(xí)Maven就是學(xué)習(xí)pom.xml文件中的配置約定的JavaEE開發(fā)領(lǐng)域普遍認(rèn)同一個(gè)觀點(diǎn):約定>配置>編碼。意思就是能用配置解決的問(wèn)題就不編碼,能基于約定的就不進(jìn)行配置。而Maven正是因?yàn)橹付颂囟ㄎ募4娴牟拍軌驅(qū)Φ腏ava工程進(jìn)行x、yx、y、zMavenMavenMavengroupId:公司或組織的倒序+當(dāng)前項(xiàng)目名jargav 結(jié)構(gòu)到倉(cāng)庫(kù)中查 o-0.0.1-※注意:自己的Maven工程必須執(zhí)行安裝操作才會(huì)進(jìn)入倉(cāng)庫(kù)。安裝令是:mvnMaven<?xmlversion="1.0"<?xmlversion="1.0""" <artifactId>packageimportcom.atguigu.maven.o;publicclassoFriend{publicpackageimportcom.atguigu.maven.o;publicclassoFriend{publicStringsayoToFriend(Stringname){oo=newo();Stringstr=o.sayo(name)+"Iam"+this.getMyName();return}publicStringgetMyName(){return"John";}}packagepackage import public publicvoid Stringresults=oFriend=olitingwei!Iam}}在 下新建測(cè)試文 關(guān)鍵: o的依這 o就是的第一個(gè)Maven工程現(xiàn) 進(jìn)一步的問(wèn)題是 oFriend工程會(huì)到哪里去 o呢當(dāng)Ajar包需要用到Bjar包中的類時(shí),就說(shuō)A對(duì)B有依賴。例如:commons-fileupload-1.3.jar依賴commons-io-2.0.1.jar。<!—<!--通過(guò)第二個(gè)Maven工程已經(jīng)看到,當(dāng)前工程會(huì)到本地倉(cāng)庫(kù)中根據(jù)坐標(biāo)查找它所依賴的<!—<!--A依賴B,BCA→BB→CA→CMavenjarjar 下的Java代碼可以這個(gè)范圍的依 下的Java代碼可以這個(gè)范圍的依 例如: o的依賴。主程序、測(cè)試程序和服務(wù)器運(yùn)行時(shí)都需要用到 下的Java代碼不能這個(gè)范圍的依 下的Java代碼可以這個(gè)范圍的依部署到Tomcat服務(wù)器上運(yùn)行時(shí)不會(huì)放在WEB-INF的lib 例如:對(duì)junit的依賴。僅僅是測(cè)試程序部分需要。 下的Java代碼可以這個(gè)范圍的依 下的Java代碼可以這個(gè)范圍的依 例如:servlet-api在服務(wù)器上運(yùn)行時(shí),ServletAPI 下的Java代碼不能這個(gè)范圍的依 下的Java代碼可以這個(gè)范圍的依 例如:JDBC⑤其他:import、system當(dāng)存在間接依賴的情況時(shí),主工程對(duì)間接依賴的jar可以嗎?這要看間接依賴的jar包引入時(shí)的依賴范圍——只有依賴范圍為compile時(shí)可以。例如:MavenAABC√D×E×jar包②路徑相同時(shí)先者優(yōu)這里“”的先后順序指的是dependency配置的先后順序survey_environmentcommons-logging1.1.1survey_publicsurvey_publiccommons-loggingjar<groupId><groupId>Springjar包依賴為例:Springspring-core、spring-contextjar包。Springjar4.0.0spring-core<groupId><groupId><groupId><groupId><groupId><groupId>問(wèn)題是如果想要將這些jar包的版本升級(jí)為4.1.1,是不是要手動(dòng)一個(gè)個(gè)修改呢?顯然 <groupId><groupId><groupId><groupId><groupId><groupId>[1]Maven[2]倉(cāng)(1):架設(shè)在當(dāng)前局域網(wǎng)環(huán)境下,為當(dāng)前局域網(wǎng)范圍內(nèi)的所有Maven工程服務(wù)(2)倉(cāng)庫(kù):架設(shè)在Internet上,為全世界所有Maven工程服務(wù)(3)倉(cāng)庫(kù)的鏡像:架設(shè)在各個(gè)大洲,為倉(cāng)庫(kù)分擔(dān)流量。減輕倉(cāng)庫(kù)的壓力,同時(shí)更快的[1]Maven[2]自己開發(fā)的項(xiàng)目的模[3]第框架或工具的jar 11.1Maven的生命周期Maven①CleanLifecycle②DefaultLifecycle構(gòu)建的部分,編譯,測(cè)試,打包,安裝,部署等等 ifecycle再次強(qiáng)調(diào)一下它們是相互獨(dú)立的,你可以僅僅調(diào)用clean來(lái)清理工作 ,僅僅調(diào)用site來(lái)生成站點(diǎn)。當(dāng)然你也可以直接運(yùn)行mvncleaninstallsite運(yùn)行所有這三套生命周期。,每套生命周期都由一組階段(Phase)組成平時(shí)在命令行輸入令總會(huì)對(duì)應(yīng)于一個(gè)特定的階段。比mvncleancleanCleanCleanclean階段。,cleanClean①pre-cleanclean②clean③post-cleancleanSite①pre-site②site③post-site④site-deploy將生成的站點(diǎn)文署到特定的服務(wù)器這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布Maven站點(diǎn),這Maven相當(dāng)強(qiáng)大的功能,Manager比較喜歡,文檔及統(tǒng)計(jì)數(shù)據(jù)自動(dòng)生成,很好看。DefaultDefaultMaven生命周期中最重要的一個(gè),絕大部分工作都發(fā)生在這個(gè)生命周期中。這里,process-resources并處理資源文件,至目 ,準(zhǔn)備打包c(diǎn)ompileprocess-test-resources并處理資源文件,至目標(biāo)測(cè) piletest使用合適的單元測(cè)試框架運(yùn)試。這些測(cè)試代碼不會(huì)被打包或部署packageJAR。installdeploy將最終的包到的倉(cāng)庫(kù),以讓其它開發(fā)與項(xiàng)目共享或部署到服務(wù)器上運(yùn)行運(yùn)行任何一個(gè)階段的時(shí)候,它前面的所有階段都會(huì)被運(yùn)行,例如運(yùn)行mvninstall的時(shí)候,代碼會(huì)Maven為什么能夠自動(dòng)執(zhí)行構(gòu)建過(guò)程的各個(gè)環(huán)節(jié)的原因。此外,Maven的插Maven的生命周期的,因此理解生命周期至關(guān)重要。Maven的僅僅定義了抽象的生命周期,具體的任務(wù)都是交由插件完成的Maven MavenMavenEclipse自Kepler版本開始內(nèi)置了MavenMavenMaven①指定Maven程序的位將Maven解 下\conf\settings.xml文件拷貝到 MavenEclipseMavenMavensrc/main/javapublicpublicStringmakeFriends(StringoFriendoFriendfriend=newoFriend();friend.sayoToFriend("litingwei");Stringstr="Hey,"+friend.getMyName()+"makeafriendplease.";return}packageimport.junit.Test;packageimport.junit.Test;publicclassMakeFriendsTest{publicvoidMakeFriendsmakeFriend=newMakeFriends();Stringstr=makeFriend.makeFriends("litingwei");assertEquals("Hey,Johnmakeafrie
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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年中國(guó)PU膠振動(dòng)式光飾機(jī)數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)PE印刷掛鉤袋數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)DVD衛(wèi)星接收機(jī)數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)8寸高清屏液晶顯示器數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)18.9升飲用水桶拋光機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)高溫過(guò)濾布市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)防水工作服裝市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)鋼絲吊件市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)貨位式貨架市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)腦脈寧片市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 規(guī)劃竣工面積測(cè)量與實(shí)測(cè)收費(fèi)
- 如何面對(duì)青春期叛逆心理
- 答題卡的正確使用方法專題培訓(xùn)課件
- 空調(diào)驗(yàn)證方案
- 國(guó)際貿(mào)易地理教材課件匯總完整版ppt全套課件最全教學(xué)教程整本書電子教案全書教案課件合集
- 電機(jī)振動(dòng)測(cè)定方法及限值振動(dòng)測(cè)定方法
- 各類給水管材水力計(jì)算表
- 濟(jì)南遙墻機(jī)場(chǎng)擴(kuò)建工程航站樓建設(shè)監(jiān)理大綱
- 七年級(jí)上冊(cè)數(shù)學(xué)知識(shí)點(diǎn)總結(jié)及精編例題1
- 往生薦亡功德文疏
- 心內(nèi)科高危藥物安全管理與指引
評(píng)論
0/150
提交評(píng)論