命令簡(jiǎn)介
maven的命令格式如下:
mvn [plugin-name]:[goal-name]
該命令的意思是:執(zhí)行plugin-name
插件的goal-name
目標(biāo)(或者稱為動(dòng)作)挨稿。
用戶可以通過(guò)兩種方式調(diào)用Maven插件目標(biāo)狮含。
- 第一種方式是將插件目標(biāo)與生命周期階段(lifecycle phase)綁定,這樣用戶在命令行只是輸入生命周期階段而已稍浆。例如Maven默認(rèn)將
maven-compiler-plugin
的compile
目標(biāo)與compile
生命周期階段綁定互艾,因此命令mvn compile
實(shí)際上是先定位到compile
這一生命周期階段试和,然后再根據(jù)綁定關(guān)系調(diào)用maven-compiler-plugin
的compile
目標(biāo)。 - 第二種方式是直接在命令行指定要執(zhí)行的插件目標(biāo)纫普,例如
mvnarchetype:generate
就表示調(diào)用maven-archetype-plugin
的generate
目標(biāo)阅悍,這種帶冒號(hào)的調(diào)用方式與生命周期無(wú)關(guān)。
常用命令
-
mvn –version
顯示版本信息 -
mvn clean
清理項(xiàng)目生產(chǎn)的臨時(shí)文件,一般是模塊下的target目錄 -
mvn compile
編譯源代碼昨稼,一般編譯模塊下的src/main/Java目錄 -
mvn package
項(xiàng)目打包工具,會(huì)在模塊下的target目錄生成jar或war等文件 -
mvn test
測(cè)試命令,或執(zhí)行src/test/java/下junit的測(cè)試用例. -
mvn install
將打包的jar/war文件復(fù)制到你的本地倉(cāng)庫(kù)中,供其他模塊使用 -
mvn deploy
將打包的文件發(fā)布到遠(yuǎn)程參考,提供其他人員進(jìn)行下載依賴 -
mvn site
生成項(xiàng)目相關(guān)信息的網(wǎng)站 -
mvn eclipse:eclipse
將項(xiàng)目轉(zhuǎn)化為Eclipse項(xiàng)目 -
mvn dependency:tree
打印出項(xiàng)目的整個(gè)依賴樹 -
mvn archetype:generate
創(chuàng)建Maven的普通java項(xiàng)目 -
mvn tomcat:run
在tomcat容器中運(yùn)行web應(yīng)用 -
mvn jetty:run
調(diào)用 Jetty 插件的 Run 目標(biāo)在 Jetty Servlet 容器中啟動(dòng) web 應(yīng)用
運(yùn)行maven命令的時(shí)候溉箕,首先需要定位到maven項(xiàng)目的目錄,也就是項(xiàng)目的pom.xml文件所在的目錄悦昵。否則肴茄,必以通過(guò)參數(shù)來(lái)指定項(xiàng)目的目錄。
命令參數(shù)
-D
傳入屬性參數(shù)
比如命令:
mvn package -Dmaven.test.skip=true
以-D
開頭但指,將maven.test.skip
的值設(shè)為true
,就是告訴maven打包的時(shí)候跳過(guò)單元測(cè)試寡痰。同理抗楔,mvn deploy -Dmaven.test.skip=true
代表部署項(xiàng)目并跳過(guò)單元測(cè)試。
-P
使用指定的Profile配置
比如項(xiàng)目開發(fā)需要有多個(gè)環(huán)境拦坠,一般為開發(fā)连躏,測(cè)試,預(yù)發(fā)贞滨,正式4個(gè)環(huán)境入热,在pom.xml中的配置如下:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>qa</id>
<properties>
<env>qa</env>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<env>pre</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
......
<build>
<filters>
<filter>config/${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
......
</build>
profiles定義了各個(gè)環(huán)境的變量id,filters中定義了變量配置文件的地址晓铆,其中地址中的環(huán)境變量就是上面profile中定義的值勺良,resources中是定義哪些目錄下的文件會(huì)被配置文件中定義的變量替換。
通過(guò)maven可以實(shí)現(xiàn)按不同環(huán)境進(jìn)行打包部署骄噪,命令為:
mvn package -P dev
其中dev
為環(huán)境的變量id,代表使用id為dev
的profile尚困。
-e
顯示maven運(yùn)行出錯(cuò)的信息
-o
離線執(zhí)行命令,即不去遠(yuǎn)程倉(cāng)庫(kù)更新包
-X
顯示maven允許的debug信息
-U
強(qiáng)制去遠(yuǎn)程更新snapshot的插件或依賴,默認(rèn)每天只更新一次
實(shí)例
archetype:create
是maven 3.0.5之前創(chuàng)建項(xiàng)目的命令链蕊,例如創(chuàng)建一個(gè)普通的Java項(xiàng)目:
mvn archetype:create -DgroupId=packageName -DartifactId=projectName -Dversion=1.0.0-SNAPSHOT
后面的三個(gè)參數(shù)用于指定項(xiàng)目的groupId事甜、artifactId以及version。
創(chuàng)建Maven的Web項(xiàng)目:
mvn archetype:create -DgroupId=packageName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-webapp
archetypeArtifactId
參數(shù)用于指定使用哪個(gè)maven原型滔韵,這里使用的是maven-archetype-webapp
逻谦,maven會(huì)按照web應(yīng)用的目錄結(jié)構(gòu)生成項(xiàng)目。
需要注意的是陪蜻,在maven 3.0.5之后跨跨,archetype:create
命令不在使用,取而代之的是archetype:generate
命令囱皿。
該命令會(huì)以交互的模式創(chuàng)建maven項(xiàng)目勇婴,不需要像archetype:create
那樣在后面跟一堆參數(shù),很容易出錯(cuò)嘱腥。
mvn archetype:generate -DarchetypeCatalog=internal
help:describe
maven有各種插件耕渴,插件又有各種目標(biāo)。我們不可能記得每個(gè)插件命令齿兔。maven提供了查詢各類插件參數(shù)的命令:mvn help:describe
橱脸。
例如:mvn help:describe -Dplugin=help
代表查詢help 插件的命令規(guī)范,然后maven就會(huì)告訴你該命令有幾個(gè)goal分苇,各種參數(shù)的的意義以及配置方法添诉。