Spring Cloud Alibaba-Maven(三)
阿新 • • 發佈:2019-12-31
簡介
Apache Maven是一個軟體專案管理和理解工具。基於專案物件模型(POM)的概念,Maven可以從中央資訊管理專案的構建,報告和檔案。官方網站
生命週期
在 Maven 中,有三套相互獨立的生命週期,分別是 clean、default 和 site。每個生命週期都包括多個階段,後一個階段依賴前一個階段,執行一個階段會執行它之前的所有階段。
- clean:清理專案
- default:構建專案
- site:建立專案站點
clean
更詳細的可以參見官網對生命週期的描述。官網生命週期描述
階段 | 描述 |
---|---|
pre-clean | 在實際專案清理之前執行所需的過程 |
clean | 刪除上一版本生成的所有檔案 |
post-clean | 執行完成專案清理所需的過程 |
default
階段 | 描述 |
---|---|
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 | 在整合或發行環境中完成後,將最終程式包複製到遠端儲存庫,以便與其他開發人員和專案共享 |
site
階段 | 描述 |
---|---|
pre-site | 在實際專案站點生成之前執行所需的過程 |
site | 生成專案的站點檔案 |
post-site | 執行完成站點生成併為站點部署做準備所需的過程 |
site-deploy | 將生成的站點檔案部署到指定的Web伺服器 |
命令
更詳細的請參考官方描述
命令 | 描述 |
---|---|
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 | 打包但是不測試 |
profile
配置動態打包
- 配置
<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>
複製程式碼
POM
標籤 | 描述 |
---|---|
project | 所有Maven pom.xml檔案中的頂級元素 |
modelVersion | 物件模型的版本 |
groupId | 專案的組織或組的唯一識別符號(通常域名倒置) |
artifactId | 專案名稱 |
packaging | 打包型別(例如JAR,WAR,EAR等) |
version | 專案版本 |
name | 指示用於專案的顯示名稱。這通常在Maven的生成檔案中使用 |
url | 指示可以在哪裡找到專案的站點。這通常在Maven的生成檔案中使用 |
description | 專案的基本描述 |
type | 專案型別 |
scope | 參與到哪個階段(例如test表示僅僅參與到測試) |
常見屬性
scope屬性
屬性 | 描述 |
---|---|
compile | 預設配置,適用於所有階段,會隨著專案一起釋出 |
provided | 同compile,只是在打包階段exclude |
runtime | 同compile,不參與編譯,執行時載入 |
test | 只在測試時使用,用於編譯和執行測試程式碼。不會隨專案釋出 |
system | 配合systemPath,從本地系統獲取jar |
- Optional & Exclusions
- Optional:Project-A -> Project-B -> Project-C,Project-C中使用true,可以傳遞到Project-B,無法傳遞到Project-A(需主動依賴)
- Exclusions:排除傳遞過來的依賴
版本號說明
- 語義化的版本控制
- 2.1.9.RELEASE
- 2 :主版本
- 1 :次版本(功能增刪但保持相容)
- 9 :增量版(bug修復)
- RELEASE :SNAPSHOT:開發版 -> M: 里程碑 -> RELEASE: 正式版
- 2.1.9.RELEASE
- Release Trains(Spring Cloud)
- Greenwich.SR1
- Greenwich: A->G,所以是第七代(倫敦地鐵站名)
- SR1: Service Release 1 正式版的第一個bug修復版本
- Greenwich.SR1
最後
文章若有謬誤之處,希望廣大讀者指正,互相交流,共同提高。