上一篇給大家介紹了Maven的概念和倉庫的一些信息,接下來給大家分享一下使用命令和MyEclipse創建Maven項目
一、使用命令管理Maven項目
1.1、創建Maven java項目
1)創建一個文件夾(MavenProject)——>該文件夾下按shift+右擊選擇在此處打開命令窗口——>這樣創建的maven[java]項目就在該文件夾下
2)命令:mvn archetype:generate -DgroupId=com.zyh.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart
mvn:核心命令
archetype:create:創建項目,現在maven高一點的版本都棄用了create命令而使用generate命令了。
-DgroupId=com.zyh.maven.quickstart :創建該maven項目時的groupId是什么,該作用在上面已經解釋了。一般使用包名的寫法。因為包名是用公司的域名的反寫,獨一無二
-DartifactId=simple:創建該maven項目時的artifactId是什么,就是項目名稱
-DarchetypeArtifactId=maven-archetype-quickstart:表示創建的是[maven] java項目
3)運行的前提:需要聯網,必須上網下載一個小文件
4)運行成功后
在D:\MavenProject下就會生成一個MavenJava的文件,該文件就是我們的maven java項目
1.2、創建Maven Web項目
1)命令:mvn archetype:generate -DgroupId=com.zyh.maven.quickstart -DartifactId=MyWebApp -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot
其他都差不多,創建maven web項目的話 -DarchetypeArtifactId=maven-archetype-webapp 比創建java項目多了一個 -Dversion=0.01-snapshot.
在創建java項目的時候也可以加上這個,如果不寫,會默認幫我們加上1.0-snapshot。
2)在D:\MavenProject下就會生成一個MyWebApp的文件,該文件就是我們的maven web項目
3)Maven Web項目結構
1.3、命令操作Maven java或Web項目
注意:使用命令時,必須在maven java項目的根目錄下,及可以看到pom.xml
1)編譯:mvn compile --src/main/java目錄java源碼編譯生成class (target目錄下)
編譯成功之后,可以看到MavenJava項目的根目錄下多了一個【target】文件夾,這個文件夾就是編譯成功之后Maven幫我們生成的文件夾,
打開【target】文件夾,可以看到里面有一個【classes】文件夾,【classes】文件夾中存放的就是Maven我們編譯好的java類。
2)測試:mvn test --src/test/java 目錄編譯
測試成功之后,可以看到MavenJava項目的根目錄下多了一個【target】文件夾,這個文件夾就是測試成功之后Maven幫我們生成的文件夾,
打開【target】文件夾,可以看到里面有一個【classes】和【test-classes】文件夾
3)打包:mvn package --生成壓縮文件:java項目#jar包;web項目#war包,也是放在target目錄下
描述:將maven java項目打包上傳到本地倉庫供別人調用
打包成功之后,可以看到MavenJava項目的根目錄下的【target】文件夾中多了一個MavenJava-1.jar,這個MavenJava-1.jar就是打包成功之后Maven幫我們生成的jar文件
4)安裝:mvn install --將壓縮文件(jar或者war)上傳到本地倉庫
安裝成功之后,首先會在MavenJava項目的根目錄下生成【target】文件夾,打開【target】文件夾,可以看到里面會有MavenJava-1.jar,這個MavenJava-1.jarr就是安裝成功之后Maven幫我們生成的jar文件。
除此之外,在我們存放Maven下載下來的jar包的倉庫也會有一個Hello-0.0.1-SNAPSHOT.jar,所以Maven安裝項目的過程,實際上就是把項目進行【清理】→【編譯】→【測試】→【打包】,再把打包好的jar放到我們指定的存放jar包的Maven倉庫中。
在本地倉庫中查看是否有該項目
通過在本地倉庫中的目錄可以發現為什么通過groupId、artifactId、version可以定位到倉庫中得jar包,也可以知道為什么groupId要使用公司域名的反寫(因為這樣唯一,不會與別的項目重名導致查找到的內容不精確)
5)清理:mvn clean --刪除target目錄,也就是將class文件等刪除
6)部署|發布:mvn deploy --將壓縮文件上傳私服
7)組合使用Maven命令
maven的編譯,清理,測試,打包,部署命令是可以幾個命令同時組合起來使用的,常用的命令組合如下:
mvn clean compile(先清理在打包)
mvn clean install
mvn clean test
mvn clean package
二、使用MyEclipse創建Maven項目
使用myeclpse創建項目前,需要在myeclipse中配置maven的一些信息 比如:配置本地倉庫、安裝自定義maven(myeclipse中高版本自帶了maven)等。
寫一篇我將介紹怎么在myeclipse、eclipse和idea中配置Maven
2.1、創建Maven java項目
1)選擇maven project,如果右鍵新建沒有,通過other獲得
2)創建一個簡單的項目
3)設置項目參數,創建java項目
4)創建java項目結果
2.2、創建Maven web項目
1)前面的第一和第二步都是一樣的
2)設置項目參數,其他一樣,選擇打包方式不一樣。
3)創建web項目結果
4)pom.xml文件出錯
修改
5)更新項目
項目右擊選擇Maven4MyEclipse
2.3、創建Maven項目
1)前兩步和上面的是一樣的
2)設置項目參數,其他一樣,選擇打包方式不一樣。
3)結果
maven項目一般沒用,在開發中將一個項目拆分成多個項,就需要使用maven項目(pom項目)將其他子項目進行整合。
2.4、myeclipse的Maven操作
三、Maven的生命周期
Maven生命周期就是為了對所有的構建過程進行抽象和統一,包括項目清理,初始化,編譯,打包,測試,部署等幾乎所有構建步驟
Maven有三套相互獨立的生命周期,請注意這里說的是"三套",而且"相互獨立",這三套生命周期分別是:
1)Clean Lifecycle 在進行真正的構建之前進行一些清理工作。
2)Default Lifecycle 構建的核心部分,編譯,測試,打包,部署等等。
3)Site Lifecycle 生成項目報告,站點,發布站點。
再次強調一下它們是相互獨立的,你可以僅僅調用clean來清理工作目錄,僅僅調用site來生成站點。當然你也可以直接運行 mvn clean install site 運行所有這三套生命周期。
3.1、clean生命周期
clean生命周期每套生命周期都由一組階段(Phase)組成,我們平時在命令行輸入的命令總會對應於一個特定的階段。比如,運行mvn clean ,這個的clean是Clean生命周期的一個階段。有Clean生命周期,也有clean階段。
Clean生命周期一共包含了三個階段:
1)pre-clean 執行一些需要在clean之前完成的工作
2)clean 移除所有上一次構建生成的文件
3)post-clean 執行一些需要在clean之后立刻完成的工作
"mvn clean" 中的clean就是上面的clean,在一個生命周期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,"mvn clean"等同於 mvn pre-clean clean ,
如果我們運行 mvn post-clean ,那么 pre-clean,clean 都會被運行。這是Maven很重要的一個規則,可以大大簡化命令行的輸入。
3.2、Default生命周期
Default生命周期是Maven生命周期中最重要的一個,絕大部分工作都發生在這個生命周期中。這里,只解釋一些比較重要和常用的階段:
validate generate-sources process-sources generate-resources process-resources 復制並處理資源文件,至目標目錄,准備打包。 compile 編譯項目的源代碼。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 復制並處理資源文件,至目標測試目錄。 test-compile 編譯測試源代碼。 process-test-classes test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。 prepare-package package 接受編譯好的代碼,打包成可發布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install 將包安裝至本地倉庫,以讓其它項目依賴。 deploy 將最終的包復制到遠程的倉庫,以讓其它開發人員與項目共享。
運行任何一個階段的時候,它前面的所有階段都會被運行,這也就是為什么我們運行mvn install 的時候,代碼會被編譯,測試,打包。此外,Maven的插件機制是完全依賴Maven的生命周期的,因此理解生命周期至關重要。
3.3、Site生命周期
Site生命周期pre-site 執行一些需要在生成站點文檔之前完成的工作
1)site 生成項目的站點文檔
2)post-site 執行一些需要在生成站點文檔之后完成的工作,並且為部署做准備
3)site-deploy 將生成的站點文檔部署到特定的服務器上
這里經常用到的是site階段和site-deploy階段,用以生成和發布Maven站點,這可是Maven相當強大的功能,Manager比較喜歡,文檔及統計數據自動生成,很好看。