Maven 命令

前篇已經講過,Maven本質上是一個插件框架,並不執行任何具體的構建任務,它把全部這些任務都交給插件來完成。java

做爲開發利器的maven,爲咱們提供了十分豐富的命令,瞭解maven的命令行操做並熟練運用常見的maven命令仍是十分必要的,即便譬如IDEA等工具給我提供了圖形界面化工具,但其底層仍是依靠maven命令來驅動的。所以,知其然,知其因此然,方能百戰不殆。web

Maven的命令格式以下:tomcat

mvn [plugin-name]:[goal-name]
複製代碼

該命令的意思是:執行plugin-name插件的goal-name目標。bash

用戶能夠經過兩種方式調用Maven插件的目標:app

  1. 將插件目標與生命週期階段lifecycle phase綁定,這樣用戶在命令行只是輸入生命週期階段而已,例如Maven默認將maven-compiler-plugincompile目標與compile生命週期階段綁定,所以命令mvn compile其實是先定位到compile這一輩子命週期階段,而後再根據綁定關係調用maven-compiler-plugincompile目標。
  2. 直接在命令行指定要執行的插件目標,例如mvn archetype:generate就表示調用maven-archetype-plugingenerate目標,這種帶冒號的調用方式與生命週期無關。

###經常使用命令框架

命令 描述
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

1. -D 傳入屬性參數

好比命令: mvn package -Dmaven.test.skip=true-D開頭,將maven.test.skip的值設爲true,就是告訴maven打包的時候跳過單元測試。同理,mvn deploy-Dmaven.test.skip=true表明部署項目並跳過單元測試。webapp

2. -P 使用指定的Profile配置

好比項目開發須要有多個環境,通常爲開發,測試,預發,正式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定義了各個環境的變量idfilters中定義了變量配置文件的地址,其中地址中的環境變量就是上面profile中定義的值,resources中是定義哪些目錄下的文件會被配置文件中定義的變量替換。工具

經過maven能夠實現按不一樣環境進行打包部署,命令爲:

mvn package -P dev
複製代碼

其中dev爲環境的變量id,表明使用Id爲devprofile

3. -e 顯示maven運行出錯的信息
4. -o 離線執行命令,即不去遠程倉庫更新包
5. -X 顯示maven容許的debug信息
6. -U 強制去遠程更新snapshot的插件或依賴,默認天天只更新一次

maven命令實例

下面結合幾個實例來看看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
複製代碼

後面的三個參數用於指定項目的groupIdartifactId以及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運行操做

eclipse
IDEA Maven運行操做
IDEA
都要選擇在運行的項目的pom文件目錄
相關文章
相關標籤/搜索