Maven學習總結
最近我學習了一下Maven工具,下面是我對Maven的理解,有理解不對的地方也請批評指正。
1.Maven是什麼?
首先Maven是一個項目管理工具,基於項目對象模型(POM),它主張遵循"約定優於配置"這個思想。 Maven 經過給項目提供明智的默認行爲來融合這個思想。 在沒有自定義的狀況下,源代碼假定在 {basedir}/src/main/java,資源文件假定是在{basedir}/src/main/resources 。測試代碼假定是在 {basedir}/src/test 。雖然,一開始以爲Maven這麼作有些霸道,可是隻要咱們遵循這些約定,Maven 可使咱們的項目運行更快,而且可以很方便的幫你管理項目報告,生成站點,管理JAR文件。
Maven 的核心其實不作什麼實際的事情,它就是一個管理者,負責解析一些 XML 文檔,管理生命週期與插件。所以,Maven 被設計成將主要的職責委派給一組 Maven插件,這些插件影響 Maven生命週期,執行對目標的訪問。也就是說,Maven大部分的智能是由插件實現的,而插件從 Maven 倉庫得到,這些Maven插件是一個單個或多個目標的集合。
例如:Maven Archetype 插件的一個命令mvn archetype:create 其中archetype:create是一個Maven目標,archetype是一個插件標識,create是目標標識。
2.本地倉庫(localRepository)
第一次運行時maven將從遠程倉庫下載構件和插件到你本機上,存儲在你的本地Maven倉庫裏。一旦 Maven 已經從遠程倉庫下載了一個構件,它將永遠不須要再下載一次,由於 maven會首先在本地倉庫查找插件,而後纔是其它地方。
在Maven的安裝目錄下,conf/ 目錄包含了一個全局的 settings.xml文件,該文件用來自定義你機器上 Maven 的一些行爲。該文件包含了用戶相關的認證,倉庫和其它信息的配置,用來自定義 Maven 的行爲。Maven默認的本地的倉庫目錄是~/.m2/repository/,當你從遠程 Maven 倉庫下載依賴的時候,Maven 在你本地倉庫存儲了這個依賴的一個副本。固然你也能夠更改本地倉庫的位置,只要修改settings.xml文件中的localRepository屬性就能夠,以下代碼所示: 修改後你的本地倉庫地址就是D:/maven-2.1.0/repo
D:/maven-2.1.0/repo
3.Pom文件
Maven中最基礎的是Pom.xml文件,該文件中定義了項目的座標,以及項目所需依賴關係和插件行爲。一個Maven座標能夠用來惟一標識一個項目,一個依賴,或者Maven POM 裏的一個插件,座標由groupId, artifactId, version 和 packaging組成,結構以下所示:
groupId:artifactId:packaging:version(mavenbook:my-app:jar:1.0-SNAPSHOT.)
4.常用的Maven命令
1. 建立Maven的普通java項目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=projectName
2. 建立Maven的Web項目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
3. 編譯源代碼: mvn compile
4. 編譯測試代碼:mvn test-compile
5. 運行測試:mvn test
6. 產生site:mvn site
7. 打包:mvn package
8. 清除產生的項目:mvn clean
9. 生成eclipse項目:mvn eclipse:eclipse
10. 編譯測試的內容:mvn test-compile
11. 只打jar包: mvn jar:jar
12. 當開發一個帶有不少失敗單元測試的系統
mvn test -Dmaven.test.failure.ignore=true
13. 想要整個的跳過測試
mvn install -Dmaven.test.skip=true
maven打包跳過測試:
mvn package -Dmaven.test.skip=true
五、 Assembly插件 maven assembly plugin
使用 Maven Exec 插件運行了 Simple Weather 應用程序。雖然 Maven Exec 能運行程序而且產生輸出,你不能就把 Maven 當成是你程序運行的容器。 若是你把這個命令行程序分發給其餘人,你大概就須要分發一個 JAR 或者一個 ZIP 存檔文件或者 TAR 壓縮過的 GZIP 文件。下面的小節介紹了使用 Maven Assembly 插件的預約義裝配描述符生成一個可分發的 JAR 文件的過程,該文件包含了項目的二進制文件和全部的依賴。
Maven Assembly 插件是一個用來建立你應用程序特有分發包的插件。 你可使用 Maven Assembly 插件以你但願的任何形式來裝配輸出,只需定義一個自定義的裝配描述符。 後面的章節咱們會說明如何建立一個自定義裝配描述符,爲 Simple Weather 應用程序生成一個更復雜的存檔文件。 本章咱們將會使用預約義的 jar-with-dependencies 格式。 要配置 Maven Assembly 插件, 咱們須要在 pom.xml 中的 build 配置中添加以下的 plugin 配置。
Pom.xml配置以下:
<
build
>
<
plugins
>
<
plugin
>
<
artifactId
>maven-assembly-plugin<
/artifactId
>
<
configuration
>
<
descriptorRefs
>
<
descriptorRef
>jar-with-dependencies<
/descriptorRef
>
<
/descriptorRefs
>
<
/configuration
>
<
/plugin
>
<
/plugins
>
<
/build
>
mvn assembly:assembly
在 target/simple-weather-1.0-jar-with-dependencies.jar 裝配好以後, 咱們能夠在命令行從新運行 Main 類。在你項目的基礎目錄下運行如下命令:
java -cp simple-weather-1.0-jar-with-dependencies.jar org.sonatype.mavenbook.weather.Main 10002
這樣個人依賴包裏的class文件也一塊兒打進了這個包裏了!
六、
使用maven命令:mvn dependency:sources 下載依賴包的源代碼。
【經常使用命令】
mvn archetype:generate //建立 Maven 項目
mvn compile //編譯源代碼
mvn test-compile //編譯測試代碼
mvn test //運行應用程序中的單元測試
mvn site //生成項目相關信息的網站
mvn clean //清除目標目錄中的生成結果
mvn package //依據項目生成 jar 文件
mvn install //在本地 Repository 中安裝 jar
mvn eclipse:eclipse //生成 Eclipse 項目文件
須要在eclipse中,配置環境變量M2_REPO,Window->Preferences->Java->Build Path->Classpath Variables
【生成項目】
JAVA項目 mvn archetype:create -DgroupId=net.welken -DartifactId=common
web 項目 mvn archetype:create -DgroupId=net.welken -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp
MAVEN2使用mvn install命令出現java.lang.
OutOfMemoryError錯誤解決辦法
命令行先執行:set MAVEN_OPTS=-Xms256m -Xmx256m,而後照常執行:mvn install.問題解決!
用maven編譯源代碼,且跳過測試,最後將編譯好的工程放到本地倉庫裏面。此時引用此文件的工程只須要刷新一下,就能夠獲得最新的依賴來執行本身的文件了。
mvn clean install -Dmaven.test.skip -Pautoconf