Spring Cloud Alibaba-Maven(三)

簡介

Apache Maven是一個軟件項目管理和理解工具。基於項目對象模型(POM)的概念,Maven能夠從中央信息管理項目的構建,報告和文檔。官方網站html

生命週期

在 Maven 中,有三套相互獨立的生命週期,分別是 clean、default 和 site。每一個生命週期都包括多個階段,後一個階段依賴前一個階段,執行一個階段會執行它以前的全部階段。java

  • clean:清理項目
  • default:構建項目
  • site:創建項目站點

clean

更詳細的能夠參見官網對生命週期的描述。官網生命週期描述web

階段 描述
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服務器

命令

更詳細的請參考官方描述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 打包可是不測試

profile

配置動態打包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>
複製代碼

POM

標籤 描述
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
  • 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: 正式版
  • Release Trains(Spring Cloud)
    • Greenwich.SR1
      • Greenwich: A->G,因此是第七代(倫敦地鐵站名)
      • SR1: Service Release 1 正式版的第一個bug修復版本

最後

文章如有謬誤之處,但願廣大讀者指正,互相交流,共同提升。服務器

相關文章
相關標籤/搜索