前篇已經講過,Maven本質上是一個插件框架,並不執行任何具體的構建任務,它把全部這些任務都交給插件來完成。java
做爲開發利器的maven,爲咱們提供了十分豐富的命令,瞭解maven的命令行操做並熟練運用常見的maven命令仍是十分必要的,即便譬如IDEA等工具給我提供了圖形界面化工具,但其底層仍是依靠maven命令來驅動的。所以,知其然,知其因此然,方能百戰不殆。web
Maven的命令格式以下:tomcat
mvn [plugin-name]:[goal-name]
複製代碼
該命令的意思是:執行plugin-name
插件的goal-name
目標。bash
用戶能夠經過兩種方式調用Maven插件的目標:app
lifecycle phase
綁定,這樣用戶在命令行只是輸入生命週期階段而已,例如Maven默認將maven-compiler-plugin
的compile
目標與compile
生命週期階段綁定,所以命令mvn compile
其實是先定位到compile
這一輩子命週期階段,而後再根據綁定關係調用maven-compiler-plugin
的compile
目標。mvn archetype:generate
就表示調用maven-archetype-plugin
的generate
目標,這種帶冒號的調用方式與生命週期無關。###經常使用命令框架
命令 | 描述 |
---|---|
mvn –version | 顯示版本信息 |
mvn clean | 清理項目生產的臨時文件,通常是模塊下的target目錄。 |
mvn compile | 編譯源代碼,通常編譯模塊下的src/main/java目錄。 |
mvn package | 項目打包工具,會在模塊下的target目錄生成jar或war等文件。 |
mvn test | 測試命令,或執行src/test/java/下junit的測試用例。 |
mvn install | 將打包的jar/war文件複製到你的本地倉庫中,供其餘模塊使用。 |
mvn deploy | 將打包的文件發佈到遠程參考,提供其餘人員進行下載依賴。 |
mvn site | 生成項目相關信息的網站。 |
mvn eclipse:eclipse | 將項目轉化爲Eclipse項目。 |
mvn dependency:tree | 打印出項目的整個依賴樹。 |
mvn archetype:generate | 建立Maven的普通java項目。 |
mvn tomcat:run | 在tomcat容器中運行web應用。 |
mvn jetty:run | 調用 Jetty 插件的 Run 目標在 Jetty Servlet 容器中啓動 web 應用。 |
注意:運行maven命令的時候,首先須要定位到maven項目的目錄,也就是項目的pom.xml文件所在的目錄。不然,必以經過參數來指定項目的目錄。 ###命令參數 上面列舉的只是比較通用的命令,其實不少命令均可以攜帶參數以執行更精準的任務。 Maven命令可攜帶的參數類型以下:eclipse
好比命令: mvn package -Dmaven.test.skip=true
以-D
開頭,將maven.test.skip
的值設爲true
,就是告訴maven打包的時候跳過單元測試。同理,mvn deploy-Dmaven.test.skip=true
表明部署項目並跳過單元測試。webapp
好比項目開發須要有多個環境,通常爲開發,測試,預發,正式4個環境,在pom.xml中的配置以下:maven
<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
定義了各個環境的變量id
,filters
中定義了變量配置文件的地址,其中地址中的環境變量就是上面profile
中定義的值,resources
中是定義哪些目錄下的文件會被配置文件中定義的變量替換。工具
經過maven能夠實現按不一樣環境進行打包部署,命令爲:
mvn package -P dev
複製代碼
其中dev
爲環境的變量id,表明使用Id爲dev
的profile
。
下面結合幾個實例來看看maven命令的使用方法。
archetype:create & archetype:generate
複製代碼
archetype
是原型
的意思,maven能夠根據各類原型來快速建立一個maven項目。
archetype:create
是maven 3.0.5以前建立項目的命令,例如建立一個普通的Java項目:
mvn archetype:create -DgroupId=packageName -DartifactId=projectName -Dversion=1.0.0-SNAPSHOT
複製代碼
後面的三個參數用於指定項目的groupId
、artifactId
以及version
。
建立Maven的Web項目:
mvn archetype:create -DgroupId=packageName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-webapp
複製代碼
archetypeArtifactId
參數用於指定使用哪一個maven原型,這裏使用的是maven-archetype-webapp
,maven會按照web應用的目錄結構生成項目。
須要注意的是,在maven 3.0.5以後,archetype:create
命令不在使用,取而代之的是archetype:generate
命令。
Eclipse Maven運行操做
IDEA Maven運行操做 ![]()
都要選擇在運行的項目的pom文件目錄 ![]()