Apache Maven是一個軟件項目管理和理解工具。基於項目對象模型(POM)的概念,Maven能夠從中央信息管理項目的構建,報告和文檔。官方網站html
在 Maven 中,有三套相互獨立的生命週期,分別是 clean、default 和 site。每一個生命週期都包括多個階段,後一個階段依賴前一個階段,執行一個階段會執行它以前的全部階段。java
更詳細的能夠參見官網對生命週期的描述。官網生命週期描述web
階段 | 描述 |
---|---|
pre-clean | 在實際項目清理以前執行所需的過程 |
clean | 刪除上一版本生成的全部文件 |
post-clean | 執行完成項目清理所需的過程 |
階段 | 描述 |
---|---|
validate | 驗證項目正確無誤,並提供全部必要的信息 |
initialize | 初始化構建狀態,例如設置屬性或建立目錄 |
generate-sources | 生成任何要包含在編譯中的源代碼 |
process-sources | 處理源代碼,例如過濾任何值 |
generate-resources | 生成資源以包含在包中 |
process-resources | 將資源複製並處理到目標目錄中,以備打包 |
compile | 編譯項目的源代碼 |
process-classes | 對編譯後生成的文件進行後處理,例如對Java類進行字節碼加強 |
generate-test-sources | 生成任何測試源代碼以包含在編譯中 |
process-test-sources | 處理測試源代碼,例如過濾全部值 |
generate-sources | 生成任何要包含在編譯中的源代碼 |
generate-test-resources | 建立測試資源 |
process-test-resources | 將資源複製並處理到測試目標目錄中 |
test-compile | 將測試源代碼編譯到測試目標目錄中 |
process-test-classes | 從測試編譯中對生成的文件進行後處理,例如對Java類進行字節碼加強。對於Maven 2.0.5及更高版本 |
test | 使用合適的單元測試框架運行測試。這些測試不該要求打包或部署代碼 |
prepare-package | 在實際包裝以前執行準備包裝所需的任何操做。這一般會致使包裝的未包裝,已處理版本。(Maven 2.1及更高版本) |
package | 獲取編譯後的代碼,並將其打包爲可分發格式,例如JAR |
pre-integration-test | 在執行集成測試以前執行所需的操做。這可能涉及諸如設置所需環境的事情 |
integration-test | 處理該程序包,並在必要時將其部署到能夠運行集成測試的環境中 |
post-integration-test | 在執行集成測試後執行所需的操做。這可能包括清理環境 |
verify | 運行任何檢查以確認包裝有效並符合質量標準 |
install | 將軟件包安裝到本地存儲庫中,以做爲本地其餘項目中的依賴項 |
deploy | 在集成或發行環境中完成後,將最終程序包複製到遠程存儲庫,以便與其餘開發人員和項目共享 |
階段 | 描述 |
---|---|
pre-site | 在實際項目站點生成以前執行所需的過程 |
site | 生成項目的站點文檔 |
post-site | 執行完成站點生成併爲站點部署作準備所需的過程 |
site-deploy | 將生成的站點文檔部署到指定的Web服務器 |
更詳細的請參考官方描述apache
命令 | 描述 |
---|---|
mvn clean | 清理臨時文件(例如target) |
mvn compile | 編譯(例如src/main/java) |
mvn test | 測試(例如src/test/java/下junit的測試用例) |
mvn package | 打包(target目錄生成jar或war等文件) |
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 應用 |
mvn package -Dmaven.test.skip=true | 打包可是不測試 |
配置動態打包tomcat
<profiles>
<profile>
<!-- 開發環境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<!-- 默認激活 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 測試環境 -->
<id>beta</id>
<properties>
<profiles.active>beta</profiles.active>
</properties>
</profile>
<profile>
<!-- 發佈環境 -->
<id>prod</id>
<properties>
<profiles.active>release</profiles.active>
</properties>
</profile>
</profiles>
<resources>
<resource>
<directory>src/main/resources</directory>
<!--先所有排除-->
<excludes>
<exclude>application*.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!--打包相應的配置文件-->
<filtering>true</filtering>
<includes>
<include>application.properties</include>
<include>application-${profile.active}.properties</include>
</includes>
</resource>
</resources>
複製代碼
mvn clean package -P<profile_name>
複製代碼
標籤 | 描述 |
---|---|
project | 全部Maven pom.xml文件中的頂級元素 |
modelVersion | 對象模型的版本 |
groupId | 項目的組織或組的惟一標識符(一般域名倒置) |
artifactId | 項目名稱 |
packaging | 打包類型(例如JAR,WAR,EAR等) |
version | 項目版本 |
name | 指示用於項目的顯示名稱。這一般在Maven的生成文檔中使用 |
url | 指示能夠在哪裏找到項目的站點。這一般在Maven的生成文檔中使用 |
description | 項目的基本描述 |
type | 項目類型 |
scope | 參與到哪一個階段(例如test表示僅僅參與到測試) |
scope屬性bash
屬性 | 描述 |
---|---|
compile | 默認配置,適用於全部階段,會隨着項目一塊兒發佈 |
provided | 同compile,只是在打包階段exclude |
runtime | 同compile,不參與編譯,運行時加載 |
test | 只在測試時使用,用於編譯和運行測試代碼。不會隨項目發佈 |
system | 配合systemPath,從本地系統獲取jar |
文章如有謬誤之處,但願廣大讀者指正,互相交流,共同提升。服務器