尚硅谷大數(shù)據(jù)技術之maven-9_第1頁
尚硅谷大數(shù)據(jù)技術之maven-9_第2頁
尚硅谷大數(shù)據(jù)技術之maven-9_第3頁
尚硅谷大數(shù)據(jù)技術之maven-9_第4頁
尚硅谷大數(shù)據(jù)技術之maven-9_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

01使不使用Maven仍然可以進行B/S結構項目的開發(fā)。從表述層、業(yè)務邏輯層到持久化層再到數(shù)據(jù)庫都有成解決方案——不使用Maven一樣可以開發(fā)項目???所以有必要通過企業(yè)開發(fā)中的實際需求來看一看哪些方面是現(xiàn)有技術的不足。添加第jar在今天的JavaEE開發(fā)領域,有大量的第框架和工具可以供使用。要使用這些jar包最簡單的方法就是粘貼到WEB-INF下的lib下。但是這會導致每次創(chuàng)建一個新的工程就需要將jar包重復lib下,從而造成工作區(qū)中存在大量重復的文件。而使用Maven后每個jar包只在本地倉庫中保存一份,需要jar包的工程只需要一個文本形式的jar包的——稱之為“坐標。不僅極大的節(jié)約了空間,讓項目更輕巧,更避免了重復文件太多而造成的。jarjar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能夠正常工作,稱之為jarleupld-1.3.jars--2.0.1r包,lead包就不能正常工作。jarjar包,jarjar包不夠,那么現(xiàn)有的程序將不能正常工作。再進一步,當你的項目中需要用到上百個jar包時,你還會人為工的逐一確認它們依賴的其他jar包嗎?這簡直是不可。而引入Maven后,Maven就可以替自動的將當前jar包所依賴的其他所有jar包全部導入進來,無需人工參與,節(jié)約了大量的時間和精力。用實際例子來說明就是:通過Maven導入commons-fileupload-1.3.jar后,commons-io-2.0.1.jar會被自動導入,程序員不必了解這個依賴關系。jar包之間的jarjar包多了項目仍然無法正常工作,這就是jar包之間的。舉個例子:現(xiàn)在有三個工程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就可以自動的處理jar包之間的問題。因為Maven中內置了兩條依賴原則:最短路者優(yōu)先和先者優(yōu)先,上述問題MakeFriend工程會自動使用log4j.1.2.14.jar獲取第jarJavaEEjarjar包在其本身的官網(wǎng)上的獲取方式都不盡相同。jar包找遍互聯(lián)網(wǎng),身心俱疲,沒有經(jīng)歷過的人或許體會不到這種折磨。不僅如此,費勁心血jar包里有的時候并沒有你需要的那個類,又或者又同名的類沒有你要的方法——以不規(guī)范的方式獲取jar包也往往是不規(guī)范的。使用Maven可以享受到一個完全規(guī)范的jar包管理體系你只需要在你的項目中以坐標的方式依賴一個jar包,Maven就會自動從倉庫進行并同時這個jar包所依賴的其他jar包——規(guī)范、完整、準確!解決所有問題!Tips:在這里順便說一下,的規(guī)范幾乎可以說成是程序員的最高信仰。如果沒有的規(guī)范,和其他技術格格不入最終受苦的是而任何一個領域的規(guī)范都能夠極大的降低程序員的工作難度,減少工作量。例如:USB接口可以外接各種設備,如果每個設備都有自己獨特的接口,那么不僅制造商需要隨著JavaEE項目的規(guī)模越來越龐大,開發(fā)團隊的規(guī)模也與日俱增。一個項目上的團隊持續(xù)開發(fā)很多年對于JavaEE項目來說再正常不過。那么想象一下:幾百上千的人開發(fā)的項目是同一個Web工程。JavaWeb工程。那么工程拆分后又如何進行互相調用和呢?這就需要用到Maven的依賴管理機制。大家請看的Survey項目拆分的情況:上層模塊依賴下層,所以下層模塊中定義的API都可以為上層所調用和,在實際生產環(huán)境中,項目規(guī)模增加到一定程度后,可能每個模塊都需要運行在獨立的服務器上稱Maven。,如果上面的描述能夠使你認識到使用Maven是重要,下面就來介紹一下Maven是什么Maven這個單詞的本意是:,內行。讀音是['me?v(?)n]或['mevn],不要讀作“媽文”MavenJavaJavaEE開發(fā)的歷史上那么構建呢Java大家都知道,Java是一門編譯型語言,.java擴展名的源文件需要編譯成.class擴展名的字節(jié)碼文件Java代碼想要執(zhí)行的話就必須經(jīng)過編譯得到對應的.class文件。②Web當需要通過瀏覽器Java程序時就必須將包含Java程序的Web工程編譯的結果“拿”到服務器上 下,并啟動服務器才行。這個“拿”的過程叫部署??梢詫⑽淳幾g的Web工程比喻為一只生的雞,編譯好的Web工程是一只煮雞,編譯部署的過Web工程和其編譯結果 結構對比見下圖在實際項目中整合第框架,Web工程中除了Java程序和JSP頁面、等靜態(tài)資源之外,還包括第框架的jar包以及各種各樣的配置文件。所有這些資源都必須按照正確的結構部署到服務器上,Java③測試:針對項目中的關鍵點進試,確保項目在迭發(fā)過程中關鍵點的正確性④報告:在每一次測試后以標準的格式記錄和展示⑤打包:將一個包含諸多文件的工程封裝為一個壓縮文件用于安裝或部署。Javajar包,Webwar包。Maven環(huán)境下特指將打包的結果——jarwar⑦部署:將打包的結果部署到倉庫或將war包部署到服務器上運行。。 搖搖頭,進入IDE下午繼續(xù)工作。BUG很快被修正了,接著 有問題了,回復了QA小組的郵件。一天就這樣過去了,明媚的陽光化作了美麗的晚霞 卻覺得生活并不像晚霞那樣美好啊讓來梳理一下這一天中的工作內從中發(fā)現(xiàn),的很大一部分時間花在了“編譯、打包、部署、測試”這些程式化的工作上面,能否將這些程式化的工作交給機器自動完成呢?——當然可以!這就是自動化構建Maven又是如何實現(xiàn)自動化構建的呢?簡單的說來就是它可以自動的從構建過程的起點一直執(zhí)行Maven概Maven之所以能夠實現(xiàn)自動化的構建,和它的設計是緊密相關的。對Maven的學習就圍繞它的九個概念展開:②約定 結在這一節(jié)中來看看Maven程序的安裝和本地倉庫的必要設置然后就可以編寫第一個①檢查JAVA_HOME環(huán)境變量。Maven是使用Java開發(fā)的,所以必須知道當前系統(tǒng)環(huán)境中JDK的安 ②解壓Maven的程序將apache-maven-3.2.2-bin.zip解壓到一個非中文無空格 下。例如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默認的本地倉庫:~\.m2\repositoryTips:~表示當前用戶的家Maven的程序并不包含具體功能,僅負責宏觀調度。具體功能由插件來完成。Maven程序行Maven的具體功能。為了解決這個問題,可以將Maven的本地倉庫指向一個在聯(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項目(pom.xml②cmd中繼續(xù)錄入mvnclean命令,然后再次查看 變③cmd中錄入mvncleancompile命令,查看 變④cmd中錄入mvncleantest命令,查 變⑤cmd中錄入mvncleanpackage命令,查 變注意:運行Maven命令時一定要進入pom.xml文件所在 ProjectObjectModelJavaMaven工程的配置??梢哉f學習Maven就是學習pom.xml文件中的配置約定的JavaEE開發(fā)領域普遍認同一個觀點:約定>配置>編碼。意思就是能用配置解決的問題就不編碼,能基于約定的就不進行配置。而Maven正是因為指定了特定文件保存的才能夠對的Java工程進行x、yx、y、zMavenMavenMavengroupId:公司或組織的倒序+當前項目名jargav 結構到倉庫中查 o-0.0.1-※注意:自己的Maven工程必須執(zhí)行安裝操作才會進入倉庫。安裝令是: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}}在 下新建測試文 關鍵: o的依這 o就是的第一個Maven工程現(xiàn) 進一步的問題是 oFriend工程會到哪里去 o呢當Ajar包需要用到Bjar包中的類時,就說A對B有依賴。例如:commons-fileupload-1.3.jar依賴commons-io-2.0.1.jar。<!—<!--通過第二個Maven工程已經(jīng)看到,當前工程會到本地倉庫中根據(jù)坐標查找它所依賴的<!—<!--A依賴B,BCA→BB→CA→CMavenjarjar 下的Java代碼可以這個范圍的依 下的Java代碼可以這個范圍的依 例如: o的依賴。主程序、測試程序和服務器運行時都需要用到 下的Java代碼不能這個范圍的依 下的Java代碼可以這個范圍的依部署到Tomcat服務器上運行時不會放在WEB-INF的lib 例如:對junit的依賴。僅僅是測試程序部分需要。 下的Java代碼可以這個范圍的依 下的Java代碼可以這個范圍的依 例如:servlet-api在服務器上運行時,ServletAPI 下的Java代碼不能這個范圍的依 下的Java代碼可以這個范圍的依 例如:JDBC⑤其他:import、system當存在間接依賴的情況時,主工程對間接依賴的jar可以嗎?這要看間接依賴的jar包引入時的依賴范圍——只有依賴范圍為compile時可以。例如:MavenAABC√D×E×jar包②路徑相同時先者優(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>問題是如果想要將這些jar包的版本升級為4.1.1,是不是要手動一個個修改呢?顯然 <groupId><groupId><groupId><groupId><groupId><groupId>[1]Maven[2]倉(1):架設在當前局域網(wǎng)環(huán)境下,為當前局域網(wǎng)范圍內的所有Maven工程服務(2)倉庫:架設在Internet上,為全世界所有Maven工程服務(3)倉庫的鏡像:架設在各個大洲,為倉庫分擔流量。減輕倉庫的壓力,同時更快的[1]Maven[2]自己開發(fā)的項目的模[3]第框架或工具的jar 11.1Maven的生命周期Maven①CleanLifecycle②DefaultLifecycle構建的部分,編譯,測試,打包,安裝,部署等等 ifecycle再次強調一下它們是相互獨立的,你可以僅僅調用clean來清理工作 ,僅僅調用site來生成站點。當然你也可以直接運行mvncleaninstallsite運行所有這三套生命周期。,每套生命周期都由一組階段(Phase)組成平時在命令行輸入令總會對應于一個特定的階段。比mvncleancleanCleanCleanclean階段。,cleanClean①pre-cleanclean②clean③post-cleancleanSite①pre-site②site③post-site④site-deploy將生成的站點文署到特定的服務器這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布Maven站點,這Maven相當強大的功能,Manager比較喜歡,文檔及統(tǒng)計數(shù)據(jù)自動生成,很好看。DefaultDefaultMaven生命周期中最重要的一個,絕大部分工作都發(fā)生在這個生命周期中。這里,process-resources并處理資源文件,至目 ,準備打包compileprocess-test-resources并處理資源文件,至目標測 piletest使用合適的單元測試框架運試。這些測試代碼不會被打包或部署packageJAR。installdeploy將最終的包到的倉庫,以讓其它開發(fā)與項目共享或部署到服務器上運行運行任何一個階段的時候,它前面的所有階段都會被運行,例如運行mvninstall的時候,代碼會Maven為什么能夠自動執(zhí)行構建過程的各個環(huán)節(jié)的原因。此外,Maven的插Maven的生命周期的,因此理解生命周期至關重要。Maven的僅僅定義了抽象的生命周期,具體的任務都是交由插件完成的Maven MavenMavenEclipse自Kepler版本開始內置了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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論