maven 命令

轉(zhuǎn)載:http://blog.csdn.net/u012562943/article/details/50461166
mvn -h 可以看到很多命令及其用途;
-am --also-make 同時(shí)構(gòu)建所列模塊的依賴模塊;
-amd -also-make-dependents 同時(shí)構(gòu)建依賴于所列模塊的模塊;
-pl --projects <arg> 構(gòu)建制定的模塊,模塊間用逗號分隔;
-rf -resume-from <arg> 從指定的模塊恢復(fù)反應(yīng)堆。

假設(shè)有如下聚合模塊:account-aggregator ,其依次包含如下幾個(gè)模塊:account-parent, account-email, account-persist;
其中,email和persist模塊都繼承~parent模塊。

[html] view plaincopy

<embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. <modules>
  2. <module>account-email</module>
  3. <module>account-persist</module>
  4. <module>account-parent</module>
  5. </modules>

例一:
當(dāng)執(zhí)行mvn clean install后會(huì)得到如下幾個(gè)模塊:~aggregator, ~parent, ~email, ~persist。

例二:
-pl 構(gòu)建制定模塊
當(dāng)執(zhí)行mvn clean install -pl accouont-email,account-persist后會(huì)得到如下幾個(gè)模塊:email和persist。

例三:
-am 選項(xiàng)可以同時(shí)構(gòu)建所列模塊的依賴模塊。
當(dāng)執(zhí)行mvn clean install -pl account-email -am 后會(huì)得到如下幾個(gè)模塊:parent和email。

例四:
-amd 選項(xiàng)可以同時(shí)構(gòu)建依賴于所列模塊的模塊。
mvn clean install -pl account-parent -amd 后會(huì)得到如下模塊:parent、email和~persist。

例五:
-rf 選項(xiàng)可以在完整的反應(yīng)堆構(gòu)建順序基礎(chǔ)上,指定從哪個(gè)模塊開始構(gòu)建。
mvn clean install -rf account-email ,由于email位于第三,它之后有persist,因此會(huì)得到如下輸出模塊:email和persist。

例六:
在-pl -am或者-pl -amd的基礎(chǔ)上,還能應(yīng)用-rf參數(shù),以對裁剪后的反應(yīng)堆再次裁剪。
mvn clean install -pl account-parent -amd -rf account-email
其中,-pl 和 -amd參數(shù)會(huì)得到:~parent, email和persist模塊,在此基礎(chǔ)上 -rf參數(shù)制定從email開始構(gòu)建,于是會(huì)得到:email和~persist。

轉(zhuǎn)載:http://blog.csdn.net/u012562943/article/details/50461166

一、Maven常用命令

1.1、Maven 參數(shù)

-D 傳入屬性參數(shù)
-P 使用pom中指定的配置
-e 顯示maven運(yùn)行出錯(cuò)的信息
-o 離線執(zhí)行命令,即不去遠(yuǎn)程倉庫更新包
-X 顯示maven允許的debug信息
-U 強(qiáng)制去遠(yuǎn)程參考更新snapshot包
例如 mvn install -Dmaven.test.skip=true -Poracle
其他參數(shù)可以通過mvn help 獲取

1.2、maven常用命令

1、mvn clean
說明: 清理項(xiàng)目生產(chǎn)的臨時(shí)文件,一般是模塊下的target目錄

[圖片上傳失敗...(image-99ef7-1515998131459)]

下面來看看目錄:

image

2、mvn package
說明: 項(xiàng)目打包工具,會(huì)在模塊下的target目錄生成jar或war等文件,如下運(yùn)行結(jié)果。

image

生成的文件 如下:

image

3、mvn test
說明: 測試命令,或執(zhí)行src/test/java/下junit的測試用例.

[圖片上傳失敗...(image-f2af21-1515998131459)]

4、mvn install
說明: 模塊安裝命令 將打包的的jar/war文件復(fù)制到你的本地倉庫中,供其他模塊使用 -Dmaven.test.skip=true 跳過測試(同時(shí)會(huì)跳過test compile)

image

第一個(gè)紅框是它的輸入路徑,也是本地倉庫的路徑

文件如下 :

image

5、mvn deploy

說明: 發(fā)布命令 將打包的文件發(fā)布到遠(yuǎn)程參考,提供其他人員進(jìn)行下載依賴 ,一般是發(fā)布到公司的私服,這里我沒配置私服,所以就不演示了。

1.3、maven-eclipse-plugin插件

1、mvn eclipse:eclipse
說明: 生成eclipse配置文件,導(dǎo)入到eclipse開放,如果是使用m2eclipse插件,則可以不用次命令.直接使用插件導(dǎo)入到eclipse進(jìn)行開放

注:通過次命令生產(chǎn)的項(xiàng)目,需要在eclipse中配置M2_HOME的命令,指向你的本地倉庫文件夾.

image

來看看生成的結(jié)果:。classpath就是字節(jié)碼

[圖片上傳失敗...(image-dbe7a0-1515998131459)]

2、mvn eclipse:m2eclipse
生成eclipse配置文件,該配置文件需依賴eclipse 中有m2eclipse
-DdownloadSources=true 下載依賴包的源碼文件
-Declipse.addVersionToProjectName=true 添加版本信息到項(xiàng)目名稱中

3、mvn eclipse:clean

清除eclipse的項(xiàng)目文件

image

看看文件內(nèi)容,沒有project文件 了

image

1.4、maven-jetty-plugin插件

1、mvn jetty:run
說明: 可以直接用jetty的服務(wù)器運(yùn)行 注:此命令只適用于war的模塊,即web模塊.

2、mvn archetype:generate
說明: 模塊創(chuàng)建命令, 執(zhí)行命令后,會(huì)提示選擇創(chuàng)建項(xiàng)目的模版,這里選18(maven-archetype-quickstart)
后面會(huì)提示你輸入groupId(包存放的路徑):

eg:com.lin

提示輸入artifactId(模塊名稱):

eg:test-core
提示輸入version(版本):
1.0.0-SNAPSHOT
提示輸入package(指項(xiàng)目中基本的包路徑):
eg:com.lin
提示確認(rèn),回車即可

1.5、maven-release-plugin插件

說明: 發(fā)行版本,可與scm工具集成,來提供版本管理.不等同與版本控制.允許是必須有g(shù)oal.兩個(gè)常用的goal如下:
1、mvn release:clean

清理release操作是遺留下來的文件

[圖片上傳失敗...(image-b22fa7-1515998131459)]

2、mvn release:branch
說明: 創(chuàng)建分支,會(huì)在分支下創(chuàng)建執(zhí)行的分支路徑
-DbranchName=xxxx-100317 分支中的名稱
-DupdateBranchVersions=false 是否更新分支的版本信息,默認(rèn)為false
-DupdateWorkingCopyVersions=false 是否更新主干的版本信息,默認(rèn)為true
3、mvn release:prepare
創(chuàng)建標(biāo)記,會(huì)有交互過程,提示tag中pom的版本及trunk下的新版本號,每個(gè)模塊都會(huì)詢問,默認(rèn)是最小版本號+1
-Dtag = 4.4.0 將在tags創(chuàng)建該名稱文件夾
-DdryRun=true 檢查各項(xiàng)設(shè)置是否正確,可做測試用,會(huì)產(chǎn)生一些修改的配置文件信息.
命令:
mvn release:perform
次命令會(huì)自動(dòng)幫我們簽出剛才打的tag,然后打包,分發(fā)到遠(yuǎn)程Maven倉庫中

1.6、Maven站點(diǎn)報(bào)表

1、mvn project-info-reports:dependencies

生成項(xiàng)目依賴的報(bào)表

2、mvn dependency:resolve

查看依賴

image

查看項(xiàng)目依賴情況
3、mvn dependency:tree
打印出項(xiàng)目的整個(gè)依賴樹

image

4、mvn dependency:analyze

幫助你分析依賴關(guān)系, 用來取出無用, 重復(fù)依賴的好幫手

image

5、mvn install -X

追蹤依賴的完整軌跡

image

6、生命周期
resource->compile->process-classes->process-test-resources->test-compile->test->prepare-package->package
resources:resources 綁定在resource處理階段, 用來將src/main/resources下或者任何指定其他目錄下的文件copy到輸出目錄中
resources:testResources 將test下的resources目錄或者任何指定其他目錄copy到test輸出目錄下
compiler:testCompile 將測試類編譯(包括copy資源文件)
surefire:test 運(yùn)行測試用例

jar:jar 打jar包

二、各種范圍

compile(編譯范圍)
compile是默認(rèn)的范圍;如果沒有提供一個(gè)范圍,那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath中可用,同時(shí)它們也會(huì)被打包。

provided(已提供范圍)
provided依賴只有在當(dāng)JDK或者一個(gè)容器已提供該依賴之后才使用。例如,如果你開發(fā)了一個(gè)web應(yīng)用,你可能在編譯classpath中需要可用的Servlet API來編譯一個(gè)servlet,但是你不會(huì)想要在打包好的WAR中包含這個(gè)Servlet API;這個(gè)Servlet API JAR由你的應(yīng)用服務(wù)器或者servlet容器提供。已提供范圍的依賴在編譯classpath(不是運(yùn)行時(shí))可用。它們不是傳遞性的,也不會(huì)被打包。

runtime(運(yùn)行時(shí)范圍)
runtime依賴在運(yùn)行和測試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要。比如,你可能在編譯的時(shí)候只需要JDBC API JAR,而只有在運(yùn)行的時(shí)候才需要JDBC驅(qū)動(dòng)實(shí)現(xiàn)。

test(測試范圍)
test范圍依賴 在一般的 編譯和運(yùn)行時(shí)都不需要,它們只有在測試編譯和測試運(yùn)行階段可用。

system(系統(tǒng)范圍)
system范圍依賴與provided類似,但是你必須顯式的提供一個(gè)對于本地系統(tǒng)中JAR文件的路徑。這么做是為了允許基于本地對象編譯,而這些對象是系統(tǒng)類庫的一部分。這樣的構(gòu)件應(yīng)該是一直可用的,Maven也不會(huì)在倉庫中去尋找它。。如果你將一個(gè)依賴范圍設(shè)置成系統(tǒng)范圍,你必須同時(shí)提供一個(gè)systemPath元素。注意該范圍是不推薦使用的(你應(yīng)該一直盡量去從公共或定制的Maven倉庫中引用依賴)。

三、POM文件講解

   POM全稱是Project Object Model,即項(xiàng)目對象模型。pom.xml是maven的項(xiàng)目描述文件,它類似與antx的project.xml文件。pom.xml文件以xml的 形式描述項(xiàng)目的信息,包括項(xiàng)目名稱、版本、項(xiàng)目id、項(xiàng)目的依賴關(guān)系、編譯環(huán)境、持續(xù)集成、項(xiàng)目團(tuán)隊(duì)、貢獻(xiàn)管理、生成報(bào)表等等。總之,它包含了所有的項(xiàng)目 信息。

3.2.1. pom.xml的基本配置

[java] view plaincopy

<embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=18&height=18" wmode="transparent">

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  3. <modelVersion>4.0.0</modelVersion>

  4. <groupId>com.lin.learning</groupId>

  5. <artifactId>maven-hellowrold</artifactId>

  6. <version>0.0.1-SNAPSHOT</version>

  7. <packaging>jar</packaging>

  8. <name>maven-hellowrold</name>

  9. <url>http://maven.apache.org</url>

  10. <properties>

  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  12. </properties>

  13. </project>

modelVersion 描述這個(gè)POM文件是遵從哪個(gè)版本的項(xiàng)目描述符。
groupId 針對一個(gè)項(xiàng)目的普遍唯一識別符。通常用一個(gè)完全正確的包的名字來與其他項(xiàng)目的類似名字來進(jìn)行區(qū)分(比如:org.apache.maven)。
artifactId 在給定groupID 的group里面為artifact 指定的標(biāo)識符是唯一的 , artifact 代表的是被制作或者被一個(gè)project應(yīng)用的組件(產(chǎn)出物)。
version 當(dāng)前項(xiàng)目產(chǎn)生的artifact的版本以上4個(gè)元素缺一不可,其中g(shù)roupId, artifactId, version描述依賴的項(xiàng)目唯一標(biāo)志。

1. pom.xml文件結(jié)構(gòu)

[html] view plaincopy

<embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=18&height=18" wmode="transparent">

  1. <project>
  2. <modelVersion>4.0.0</modelVersion>
  3. <!- The Basics 項(xiàng)目的基本信息->
  4. <groupId>...</groupId>
  5. <artifactId>...</artifactId>
  6. <version>...</version>
  7. <packaging>...</packaging>
  8. <dependencies>...</dependencies>
  9. <parent>...</parent>
  10. <dependencyManagement>...</dependencyManagement>
  11. <modules>...</modules>
  12. <properties>...</properties>
  13. <!- Build Settings 項(xiàng)目的編譯設(shè)置->
  14. <build>...</build>
  15. <reporting>...</reporting>
  16. <!- More Project Information 其它項(xiàng)目信息 ->
  17. <name>...</name>
  18. <description>...</description>
  19. <url>...</url>
  20. <inceptionYear>...</inceptionYear>
  21. <licenses>...</licenses>
  22. <organization>...</organization>
  23. <developers>...</developers>
  24. <contributors>...</contributors>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Maven常用命令: 創(chuàng)建Maven的普通java項(xiàng)目: mvn archetype:create -...
    ColinYF閱讀 240評論 0 2
  • 轉(zhuǎn)載 命令簡介 maven的命令格式如下:mvn [plugin-name]:[goal-name]該命令的意思是...
    ifeelok0319閱讀 2,364評論 0 5
  • Maven命令: Maven不單止可以在Eclipse上使用,也可以在cmd中使用命令的方式操作,雖然這樣十分麻煩...
    凱哥學(xué)堂閱讀 502評論 0 0
  • maven 命令除了常用的幾個(gè),大部分經(jīng)常記不住,整理一下,方便查詢。 maven 命令的格式為 mvn [plu...
    程序之心閱讀 35,585評論 0 20
  • 基本 mvn -v - show-version -version 顯示版本信息mvn -h - help 顯示幫...
    Draper閱讀 4,326評論 0 1