一、 maven介紹
1、什麼是maven?
Maven 是一個項目管理工具,它包含了一個項目對象模型 (POM:Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯
2、maven的作用?
(1)maven的依賴管理
maven 工程中不直接將 jar 包導入到工程中,而是通過在 pom.xml 文件中添加所需 jar包的座標
(2)項目的一鍵構建
我們的項目,往往都要經歷編譯、測試、運行、打包、安裝 ,部署等一系列過程。
一鍵構建 指的是整個構建過程,使用 maven 一個命令可以輕鬆完成整個工作。
二、 maven倉庫
1、maven倉庫的分類
(1)本地倉庫
(2)遠程倉庫(私服)
(3)中央倉庫:在 maven 軟件中內置一個遠程倉庫地址 http://repo1.maven.org/maven2 ,它是中 央倉庫,服務於整個互聯網,它是由 Maven 團隊自己維護,裏面存儲了非常全的 jar 包,它包 含了世界上大部分流行的開源項目構件
2、maven工程的認識
三、 maven常用命令
1、compile(編譯命令)
mvn compile 作用是將 src/main/java 下的文件編譯爲 class 文件輸出到 target 目錄下
2、test(測試命令)
mvn test 會執行 src/test/java 下的單元測試類
3、clean(清理命令)
mvn clean 作用會刪除 target 目錄及內容
4、package(打包命令)
mvn package 對於 java 工程執行 package 打成 jar 包,對於 web 工程打成 war 包
5、install(安裝命令)
mvn install 將 maven 打成 jar 包或 war 包發佈到本地倉庫【 從運行結果中,可以看出: 當後面的命令執行時,前面的操作過程也都會自動執行 】
6、deploy
mvn deploy 將 maven 打成 jar 包或 war 包並上傳到私服
四、 pom
1、座標的書寫規則
groupId包名
artifactId 項目名或模塊名
version 版本號
2、如何添加座標
(1)從互聯網搜索
(2)去項目所在私服查
(3)在本地倉庫搜索
3、pom基本配置
<project > :文件的根節點 .
<modelversion > : pom.xml 使用的對象模型版本
<groupId > :包名
<artifactId > :項目名或模塊名
<version > :產品的版本號
<packaging > :打包類型,一般有 jar、war、pom 等【jar:執行 package 會打成 jar 包war:執行 package 會打成 war 包pom :用於 maven 工程的繼承,通常父工程設置爲 pom】
<name > :項目的顯示名,常用於 Maven 生成的文檔。
<description > :項目描述,常用於 Maven 生成的文檔
<dependencies> :項目依賴構件配置,配置項目依賴構件的座標
<build> :項目構建配置,配置編譯、運行插件等。
4、依賴範圍
5、依賴傳遞
依賴範圍對傳遞依賴的影響
是因爲沒有 junit.jar 引起的!爲什麼會這樣呢?我們 ssm_dao 模塊中有 junit 依賴而
ssm_service 模塊依賴了 ssm_dao,難道 junit 不應該傳遞過來嗎?
ssm_dao 依賴 junit,scop 爲 test
ssm_service 依賴 ssm_dao
6、依賴衝突的解決
排除依賴
<dependency>
<groupId>com.pt.poseidon.cache</groupId>
<artifactId>poseidon-cache</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
五、 分模塊構建工程
什麼是繼承?
將重複的配置提取出來在父工程的 pom.xml 中定義
什麼是聚合?
項目開發通常是分組分模塊開發,每個模塊開發完成要運行整個工程需要將每個模塊聚合在一起運行,比如:dao、service、web 三個工程最終會打一個獨立的 war 運行。
六、maven私服
1、什麼是私服?
公司在自己的局域網內搭建自己的遠程倉庫服務器,稱爲私服,私服服務器即是公司內
部的 maven 遠程倉庫,
2、倉庫類型
【1】 hosted,宿主倉庫,部署自己的 jar 到這個類型的倉庫,包括 releases 和 snapshot 兩部
分,Releases 公司內部發布版本倉庫、 Snapshots 公司內部測試版本倉庫
【2】 proxy,代理倉庫,用於代理遠程的公共倉庫,如 maven 中央倉庫,用戶連接私服,私
服自動去中央倉庫下載 jar 包或者插件。
【3】group,倉庫組,用來合併多個 hosted/proxy 倉庫,通常我們配置自己的 maven 連接倉
庫組。
【5】virtual(虛擬):兼容 Maven1 版本的 jar 或者插件