1. 程式人生 > 程式設計 >Maven

Maven

簡介

  1. Apache開源專案;

  2. 純Java開發

作用

  1. 依賴管理

  2. 專案構建

倉庫分類

  • 本地倉庫
  • 私服
  • 中央倉庫

目錄結構

uuoB2n.png

生命週期

Maven的生命週期是對所有的構建過程進行抽象和統一。Maven的生命週期是抽象的,這意味著生命週期本身不做任何實際的工作,生命週期只是定義了一系列的階段,並確定這些階段的執行順序。而在執行這些階段時,實際的工作還是由外掛來完成的。

clean生命週期

1)pre-clean 執行一些清理前需要完成的工作。 2)clean 清理上一次構建生成的檔案。 3)post-clean 執行一些清理後需要完成的工作。

default生命週期

Maven核心功能之”構建“的所有需要執行的步驟

  1. process-resources 處理專案主資原始檔。對src/main/resources目錄的內容進行變數替換等工作後,複製到專案輸出的主classpath目錄中。

7) compile 編譯專案的主原始碼

  1. process-test-sources 處理專案測試資原始檔

13)test-compile 編譯專案的測試程式碼

  1. test 使用單元測試框架執行測試,測試程式碼不會被打包或部署

17)package 接受編譯好的程式碼,打包成可釋出的格式

  1. install 將包安裝到Maven本地倉庫,供本地其他Maven專案使用

23)deploy 將最終的包複製到遠端倉庫,供其他開發人員和Maven專案使用

site生命週期

建立和釋出專案站點

命令

命令執行邏輯:首先會得到該階段所屬生命週期,從該生命週期中的第一個階段開始按順序執行,直至該階段本身。不同宣告週期的命令可同時執行。 比如:mvn clean package

依賴範圍

Compile

預設範圍

Provided

eg: jsp-api.jar servlet-api.jar(tomcat容器中有這兩個jar包,如果打包了這兩個到war包中,會和tomcat衝突。

Runtime

eg: JDBC驅動包

Test

eg: junit

Compile Provided Runtime Test
編譯
測試
打包

依賴傳遞

引入一個Jar包可能會引入其他Jar,這就是依賴傳遞。 依賴傳遞或者匯入版本不同的jar包時會出現“版本衝突”的問題,解決辦法:

  • 父工程版本鎖定

    版本鎖定只是起到指定依賴版本的作用,並不會匯入依賴.

<properties>
&emsp;&emsp;<spring.version>4.2.4.RELEASE</spring.version>
</properties>
.........
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-bean</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
複製程式碼
  • 依賴的優先原則(次要)

  • 排除依賴(不常見,百度即可)

    依賴範圍對依賴傳遞造成的影響

uuosK0.png

pom.xml

uuoDvq.png

// TODO: 待續