Mocha Framework 技術(shù)培訓(xùn)之Maven3應(yīng)用入門_第1頁
Mocha Framework 技術(shù)培訓(xùn)之Maven3應(yīng)用入門_第2頁
Mocha Framework 技術(shù)培訓(xùn)之Maven3應(yīng)用入門_第3頁
Mocha Framework 技術(shù)培訓(xùn)之Maven3應(yīng)用入門_第4頁
Mocha Framework 技術(shù)培訓(xùn)之Maven3應(yīng)用入門_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

MochaFramework技術(shù)培訓(xùn)——之Maven3應(yīng)用入門1Maven介紹、安裝、常用命令Maven是一個項目管理工具,它包含了一項目對象模型(ProjectObjectModel),一組標準集合,一個項目生命周期(ProjectLifecycle),一個依賴管理系統(tǒng)(DependencyManangementSystem),和用來運行定義在生命周期階段中插件目標的邏輯。Maven是面向技術(shù)層面,針對Java開發(fā)項目管理工具,它提供了構(gòu)建工具所提供功能的超集,除了構(gòu)建功能之外,Maven還可以管理項目結(jié)構(gòu)、管理依賴關(guān)系、生成報告、生成Web站點、有助于團隊成員之間的交流與協(xié)作。1Maven介紹指導(dǎo)開發(fā):提供了Java項目的最佳開發(fā)實踐,自由開發(fā)項目骨架而可自動生成項目結(jié)構(gòu)。自動編譯:不僅僅只像Ant自動編譯,還包括測試,打包,發(fā)布,文檔生成,項目站點生成……依賴管理:Maven可以方便地管理應(yīng)用程序依賴,例如第三方依賴、模型依賴無限擴展:插件模式可以無限增強Maven功能,例如通過Tomcat、Jetty插件可以自由控制其服務(wù)器。持續(xù)集成:鼓勵開發(fā)者積極提交代碼,更早地發(fā)現(xiàn)程序錯誤,在并行開發(fā)中穩(wěn)妥推進。開發(fā)協(xié)作:更簡單和諧的團隊協(xié)作。1開發(fā)者通過Maven管理從中受益1Maven介紹–概念模型Maven監(jiān)管項目生命周期

幾個重要的過程:compile:編譯test:測試package:打包install:安裝deploy:發(fā)布1Maven介紹–項目生命周期Maven版本MavenMaven2完成了對Maven1的重寫。重寫的首要目的是要提供了強大的Java構(gòu)建和包含API的項目,允許Maven被植入任何地方,尤其是高級別的產(chǎn)品如IDEs、質(zhì)量工具、報告工具等這些。Maven2構(gòu)建生命周期的概念正式化,其比Maven1更易擴展。Maven3在2.x基礎(chǔ)上大幅提升性能??梢宰詣又付ǜ赴姹?,并行生成,更好的完整性報告、多語言生成、更好地支持M2Eclipse…我們要使用Maven31Maven介紹

–版本下載安裝包地址:http:///download.html1Maven安裝Project:任何您想build的事物,Maven都可以認為它們是工程。這些工程被定義為工程對象模型(POM,PojectObjectModel)。一個工程可以依賴其它的工程;一個工程也可以由多個子工程構(gòu)成。POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元數(shù)據(jù)文件,類似于Ant中的build.xml文件。POM文件位于每個工程的根目錄中。GroupId:groupId是一個工程的在全局中唯一的標識符,一般地,它就是工程名。groupId有利于使用一個完全的包名,將一個工程從其它有類似名稱的工程里區(qū)別出來。1Maven名詞解釋Artifact:artifact是工程將要產(chǎn)生或需要使用的文件,它可以是jar文件,源文件,二進制文件,war文件,甚至是pom文件。每個artifact都由groupId和artifactId組合的標識符唯一識別。需要被使用(依賴)的artifact都要放在倉庫(見Repository)中,否則Maven無法找到(識別)它們。Dependency:為了能夠build或運行,一個典型的Java工程會依賴其它的包。在Maven中,這些被依賴的包就被稱為dependency。dependency一般是其它工程的artifact。Plug-in:Maven是由插件組織的,它的每一個功能都是由插件提供的。插件提供goal(類似于Ant中的target),并根據(jù)在POM中找到的元數(shù)據(jù)去完成工作。主要的Maven插件要是由Java寫成的,但它也支持用Beanshell或Ant腳本寫成的插件。Repository:倉庫。1Maven名詞解釋(續(xù))$user.home/.m2/repository/setting.xml為用戶范圍的配置文件$M2_HOME/conf/setting.xml為全局范圍的配置文件,修改后將影響本機所有的用戶配置建議:只修改用戶級別的配置,既不影響其它用戶,也不影響后期升級。1setting.xml配置介紹 localRepository:自定義本地庫路徑,默認在$user.home/.m2中 interactiveMode:交互模式,默認是true offline:是否每次編譯都去查找遠程中心庫 pluginGroups:插件組,例如org.mortbay.jetty proxies:通過代理訪問外部庫 servers:集成認證服務(wù),例如集成Tomcat mirrors:鏡像庫,可以指定內(nèi)部中心庫 profiles:個性配置,需要在Activation標簽中激活 activeProfiles:表示激活的profile1setting.xml(續(xù))遠程倉庫Maven內(nèi)置了遠程公用倉庫這個公共倉庫是由Maven自己維護,里面有大量的常用類庫,并包含了世界上大部分流行的開源項目構(gòu)件。目前是以java為主。內(nèi)部中心倉庫也稱私有共享倉庫(私服)。一般是由公司自己設(shè)立的,只為本公司內(nèi)部共享使用。它既可以作為公司內(nèi)部構(gòu)件協(xié)作和存檔,也可作為公用類庫鏡像緩存,減少在外部訪問和下載的頻率。Nexus和Artifactory均可搭建倉庫服務(wù)器。但后者支持LDAP認證,這樣就可以將私有倉庫的認證集成到公司已經(jīng)有的LDAP認證服務(wù)器。內(nèi)部中心庫又可以連接第三方庫,例如Jboss中心庫、Spring中心庫,以隨時獲得最新版本的第三方構(gòu)件。1Maven倉庫本地倉庫Maven會將工程中依賴的構(gòu)件(Jar包)從遠程下載到本機一個目錄下管理,通常默認在$user.home/.m2/repository下。自Maven2以后,構(gòu)件的存儲方式通常是groupId/artifactId/version/*.jar修改本地庫位置:在$M2_HOME/conf/setting.xml文件的<localRepository>元素中指定路徑,例如:<localRepository>D:/my_repository</localRepository>1Maven倉庫(續(xù))檢測Maven、JDK版本mvn–v或者mvn-version獲取幫助選項mvn–h或者mvn–help顯示詳細錯誤信息mvn–e創(chuàng)建Java項目mvnarchetype:create-DgroupId=${groupId}-DartifactId=${artifactId}示例:mvnarchetype:create-DgroupId=com.howsun-DartifactId=myApp-Dversion=0.1

1Maven常用命令創(chuàng)建Web項目mvnarchetype:create-DgroupId=${packageName}-DartifactId=${webappName}-DarchetypeArtifactId=maven-archetype-webapp創(chuàng)建其它項目(例如SSH、JPA、JSF、Seam…)mvnarchetype:generate轉(zhuǎn)換成Eclipse工程mvneclipse:eclipsemvneclipse:clean

//清除Eclipse設(shè)置信息轉(zhuǎn)換成idea項目mvnidea:idea1Maven常用命令(續(xù))編譯mvncompile編譯測試代碼mvntest-compile產(chǎn)生Sitemvnsite測試mvntest

//運行測試mvntest-Dtest=${類名}

//單獨運行測試類清除mvnclean

//將清除原來編譯的結(jié)果1Maven常用命令(續(xù))打包mvnpackagemvnpackage–Dmaven.test.skip=true

//打包時不執(zhí)行測試發(fā)布mvninstall

//將項目打包成構(gòu)件安裝到本地倉庫mvndeploy

//發(fā)布到本地倉庫或服務(wù)器(例如Tomcat、Jboss)手動添加構(gòu)件到倉庫mvninstall:install-file-Dfile=${jar包文件位置}-DgroupId=${groupId}-DartifactId=${artifactId}-Dversion=${版本號}-Dpackaging=jar-DgeneratePom=${是否同時創(chuàng)建pom文件}復(fù)制依賴構(gòu)件到相應(yīng)目錄mvndependency:copy-dependencies-DoutputDirectory=${目標目錄}-DexcludeScope=${scope}-Dsilent=true1Maven常用命令(續(xù))Maven項目的核心配置文件,位于每個工程的根目錄,指示Maven工作的元數(shù)據(jù)文件。節(jié)點介紹<project>:文件的根節(jié)點<modelversion>:pom.xml使用的對象模型版本<groupId>:創(chuàng)建項目的組織或團體的唯一Id<artifactId>:項目的唯一Id,可視為項目名<packaging>:打包類型,一般有JAR,WAR,EAR等<version>:產(chǎn)品的版本號<name>:項目的顯示名,常用于Maven生成的文檔<url>:組織的站點,常用于Maven生成的文檔<description>:項目描述,常用于Maven生成的文檔1pom.xml<dependencies>:構(gòu)件依賴<parent>:模型繼承<dependencyManagement>:依賴管理<reporting>:創(chuàng)建報告<build>:構(gòu)建<repositories>:引用第三方倉庫<licenses>:許可1pom.xml(續(xù))1Maven介紹、安裝、常用命令2Eclipse下Maven項目開發(fā)安裝M2Eclipse插件Help->InstallNewSoftware->Workwith->Add插件介紹核心組件Name:m2eLocation擴展組件Name:m2e-extrasLocation1Eclipse中使用MavenMavenSCMhandlerforSubclipse:該組件能幫助我們直接從Subversion服務(wù)器簽出Maven項目(須先安裝Subclipse)MavenSCMhandlerforTeam/CVS:該組件能幫助我們直接從CVS服務(wù)器簽出Maven項目MavenSCMIntegration:Eclipse環(huán)境中Maven與SCM集成核心的模塊MavenissuetrackingconfiguratorforMylyn:幫助我們使用POM中的缺陷跟蹤系統(tǒng)信息連接Mylyn至服務(wù)器MavenIntegrationforWTP:WTP是Eclipse的Web工具平臺,可以很方便地編輯JSP、HTML、Javascript、CSS…。該模塊可以讓Eclipse自動讀取POM信息并配置WTP項目M2eclipseExtensionsDevelopmentSupport:用來支持擴展m2eclipseProjectConfiguratorsforcommonlyusedmavenplugins:一個臨時的組件,用來支持一些Maven插件與Eclipse的集成。1M2Eclipse擴展組件介紹Mylyn

//集成任務(wù)管理和上下文管理Name:MylynforEclipse3.4and3.5Location:/tools/mylyn/update/e3.4/aspectJ

//切面編程插件Name:aspectJLocation:http:///tools/ajdt/35/updateSubclipse

//SVN版本控制器客戶端Name:Subclipse1.6.xUpdateSiteLocation:http:///update_1.6.xWTP

//Web工具平臺Name:TheEclipseWebToolsPlatform(WTP)ProjectupdatesiteLocation:http:///webtools/updatesEPP

//負責(zé)創(chuàng)建Eclipse下載軟件包Name:EPPPackagesRepositoryLocation:/technology/epp/packages/galileo1M2Eclipse擴展組件安裝強烈建議統(tǒng)一本地Maven程序Window->Perferences->Maven->Installations->Add指定到M2_HOME目錄1替換Eclipse內(nèi)置的MavenFile->new->other->Maven->MavenObjectNext勾選Createasimpleproject(這樣可以跳過項目骨架選擇)1在Eclipse中創(chuàng)建Maven項目填寫GroupId和ArtifactIdFinish1在Eclipse中創(chuàng)建Maven項目File->Import->Maven->ExistingMavenProjects->Next->指定路徑也可以將非Eclipse工程轉(zhuǎn)換成該標準工程:進入項目,即pom.xml當(dāng)前目錄,執(zhí)行命令:mvneclipse:eclipse1在Eclipse中導(dǎo)入Maven項目1Maven介紹、安裝、常用命令2Eclipse下Maven項目開發(fā)3坐標與依賴一個Java構(gòu)件的五大坐標元素groupId:組IDartifactId:實際項目的IDversion:版本package:包類型,如JAR、EAR、POM…classifier:分類,如二進制包,源、文檔通過這種規(guī)則就可以定位到世界上任何一個構(gòu)件1坐標依賴配置<dependency><groupId>……</groupId><artifactId>……</artifactId><version>……</version><classifier>……</classifier><scope>……</scope><type>……</type><systemPath>……</systemPath><optional>……</optional><exclusions></exclusions></dependency>1依賴groupId、artifactId、version是依賴的基本坐標,缺一不可,其它兩個坐標元素不指定時將采用默認值type:依賴的類型對應(yīng)坐標packaging,默認為jaroptional:標記依賴是否可選A->B->C,那么當(dāng)A依賴于C時就可以設(shè)為可選。exclusions:排除傳遞依賴1依賴配置詳細介紹scope:依賴范圍compile:編譯范圍,默認scope,在classpath中存在provided:已提供范圍,比如容器提供ServletAPIruntime:運行時范圍,編譯不需要,接口與實現(xiàn)分離test:測試范圍,單元測試環(huán)境需要system:系統(tǒng)范圍,自定義構(gòu)件,指定systemPathimport:導(dǎo)入依賴1依賴配置詳細介紹依賴范圍對于編譯Classpath有效對于測試Classpath有效對于運行時Classpath有效示例compileYYYspring-coretest-Y-JunitprovidedYY-servlet-apiruntime-YYJDBC驅(qū)動systemYY-本地的,Maven倉庫之外的類庫1依賴范圍與classpath關(guān)系1傳遞性依賴MyProjectWFSpring傳遞性依賴關(guān)系表A->B->C->D->X(1.6)A->D-X(2.0)X是A的傳遞依賴調(diào)解原則:第一原則:路徑近者優(yōu)先原則x2.0傳遞給A最近第二原則:第一聲明者優(yōu)先原則當(dāng)路徑相等時,則由POM聲明的依賴順序決定1依賴調(diào)解排除依賴歸類依賴<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <org.springframework.version>3.0.5.RELEASE</org.springframework.version> <org.slf4j.version>1.6.1</org.slf4j.version>

</properties>在后面的依賴中只需指明version的引用<version>${org.slf4j.version}</version>優(yōu)化依賴mvndependency:list

//打印出依賴列表mvndependency:tree

//打印出依賴樹mvndependency:analyze //分析當(dāng)前依賴通過這些工具進行分析后適當(dāng)優(yōu)化1依賴優(yōu)化1Maven介紹、安裝、常用命令2Eclipse下Maven項目開發(fā)3坐標與依賴4多模型開發(fā)通過子項目來繼承,可以共享父項目定義的所有的值。特點:單親父節(jié)點從葉節(jié)點往上定義的允許覆蓋

1繼承<parent> <groupId>...</groupId> <artifactId>...</artifactId> <relativePath>...</relativePath> <version>...</version></parent>定義一組構(gòu)建模塊的聚集特點:組合可以獨立于繼承上層節(jié)點進行組合定義

1組合<name>myproject-all</name><modules> <module>myproject-dao</module> <module>myproject-biz</module> <module>myproject-mvc</module></modules>1Maven介紹、安裝、常用命令2Eclipse下Maven項目開發(fā)3坐標與依賴4多模型開發(fā)5常用插件

1在POM中使用第三方倉庫<repositories> <repository> …… </repository></repositories>第三方倉庫會提供配置信息,詳情參考第三方的倉庫使用說明

1構(gòu)建配置<build>

<finalName>最終名</finalName><plugins>

<plugin>

<!--Maven一切的構(gòu)建工作都是居于插件執(zhí)行的,常用默認的插件有:編譯、打包、安裝-->

</plugin></plugins></build>一般構(gòu)建時加上必要的插件就可以,不需要更多的配置,因為它有內(nèi)部約定。如果需要改變配置,例如源代碼文件夾、編譯打包結(jié)果文件夾等等,都是可以改變的。Maven編譯插件命令mvncompile

1常用插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration></plugin>該插件是默認插件,如果沒有配置,Maven將以1.3級別來編譯。JAR包生成插件命令mvnjar:jar

1常用插件<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest>

<mainClass><!—入口程序-->

org.sonatype.mavenbook.weather.Main

</mainClass> <addClasspath>true</addClasspath>

</manifest></archive></configuration></plugin>默認插件,如果需要更多的配置(例如jar檔案說明信息、選擇性打包等等),可以查看官方文檔測試插件作用可以跳過測試當(dāng)測試失敗仍然執(zhí)行

1常用插件<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration></plugin>默認插件,也可以命令后面加上參數(shù)來替代配置:-Dmaven.test.skip=trueTomcat插件命令mvntomcat:run

1常用插件<plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><configuration>

……

<!—默認使用8080端口,ContextPath為build標簽中finalName指定的名稱,若沒指定,則為artifactId的值,更多配置見下面--></configuration></plugin>Tomcat插件常用配置

1常用插件<configuration>

<!—可選,context路徑--><path>/</path>

<!—可選,指定端口--><port>8080</port>

<!—可選,指定自已的server.xml文件--><serverXml></srverXml>

<!—可選,指定自已的context.xml文件--><contextFile></contextFile>

<!—可選,改變(自定義)tomcat配置文件目錄--><configurationDir></configurationDir>

<!—可選,攜帶一些系統(tǒng)變量,例如jvm參數(shù),是map類型--><systemProperties></systemProperties>

<!—可選,指定web.xml文件,默認在WEB-INF/下--><tomcatWebXml></tomcatWebXml>

<!—可選,指定URI編碼類型--><uriEncoding>UTF-8</uriEncoding> //uri編碼</configuration>這些配置適合在Eclipse中通過Maven啟動Tomcat來測試自己

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論