Maven
阿新 • • 發佈:2019-12-31
簡介
-
Apache開源專案;
-
純Java開發
作用
-
依賴管理
-
專案構建
倉庫分類
- 本地倉庫
- 私服
- 中央倉庫
目錄結構
生命週期
Maven的生命週期是對所有的構建過程進行抽象和統一。Maven的生命週期是抽象的,這意味著生命週期本身不做任何實際的工作,生命週期只是定義了一系列的階段,並確定這些階段的執行順序。而在執行這些階段時,實際的工作還是由外掛來完成的。
clean生命週期
1)pre-clean 執行一些清理前需要完成的工作。 2)clean 清理上一次構建生成的檔案。 3)post-clean 執行一些清理後需要完成的工作。
default生命週期
Maven核心功能之”構建“的所有需要執行的步驟
- process-resources 處理專案主資原始檔。對src/main/resources目錄的內容進行變數替換等工作後,複製到專案輸出的主classpath目錄中。
7) compile 編譯專案的主原始碼
- process-test-sources 處理專案測試資原始檔
13)test-compile 編譯專案的測試程式碼
- test 使用單元測試框架執行測試,測試程式碼不會被打包或部署
17)package 接受編譯好的程式碼,打包成可釋出的格式
- 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 | |
---|---|---|---|---|
編譯 | Y | Y | ||
測試 |
Y | Y | Y | Y |
打包 | Y | Y |
依賴傳遞
引入一個Jar包可能會引入其他Jar,這就是依賴傳遞。 依賴傳遞或者匯入版本不同的jar包時會出現“版本衝突”的問題,解決辦法:
-
父工程版本鎖定
版本鎖定只是起到指定依賴版本的作用,並不會匯入依賴.
<properties>
  <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>
複製程式碼
-
依賴的優先原則(次要)
-
排除依賴(不常見,百度即可)
依賴範圍對依賴傳遞造成的影響
pom.xml
// TODO: 待續