1)功能:
(1)解決jar包衝突
(2)...等
2)傳統web工程crm: jar包在項目中
3)maven開發的crm項目(大大節省了空間,實現了代碼可重用):
jar包不在項目中,而在jar包倉庫中;
jar包的座標-->找對應的jar包;
4)Maven的核心功能: 依賴管理(利用jar包的座標)
5)一鍵構建:
傳統: 編譯、測試、運行、打包、安裝、部署...
maven:
工程中pom.xml中有jar包的座標
運行: mvn tomcat:run
6)maven是一個壓縮包,並不是像QQ那樣的exe文件
7)mvn必然有tomcat插件,因爲mvn可以有自己的tomcat來構建項目的
8)安裝maven
MAVEN_HOME
JAVA_HOME
mvn -v
9)尋找jar的過程
(1)先在本地xxx/.m2/xxx
(2)聯網後,在中央倉庫下載
在公司中: (3)遠程倉庫【私服】:
只要自己的電腦和私服的IP在同一個局域網
遠程倉庫-->遠程倉庫下載jar包
或者
自己上傳的方式獲取jar包
10)自己私有中央倉庫後,可以直接啓動;
11)1個完整的maven項目組成部分:
核心代碼部分;
配置文件部分-->不打到jar包內;
測試代碼部分;
測試配置文件;
12)傳統工程目錄
src目錄
沒有一個統一的規範:
config
resources
13)maven項目標準目錄結構:
src/main/java目錄: 核心代碼部分;
src/main/resources目錄: 配置文件部分;
src/test/java目錄: 放測試代碼部分;
src/test/resources: 測試配置文件;
web工程:
src/main/webapp: js、css、圖片等
14)maven常用命令:
(1)mvn clean
把target目錄給刪掉;
把編譯好的項目信息刪除掉;
目的: 接着別人的項目開發,導入到自己的開發環境,必須把別人本地編譯的信息刪除,
因爲我們每個人的開發環境不一定是相同的;
(2)mvn compile
target目錄又一次出現了:
classes
...
目的: 編譯的是src/main下面的java代碼,編譯後放到target目錄下;
(3)mvn test
test-classes: 編譯了test下面的java代碼爲class文件到target目錄下;
注意: 也編譯了src/main下面的代碼到target下;
(4)mvn package
target目錄再次生成, 同時把java下面的代碼和test下面的代碼都編譯了;
packageing war: 指定了打成了war包;
(5)mvn install
安裝的意思:
編譯各種文件,打了個war包;
還做了個: 把包安裝到了本地倉庫;
可見,做的工作是: compile、test、package之後,打了個包放到了本地倉庫;
15)Maven生命週期:
1:利用自身集成的Tomcat插件構建:
(1)編譯(mvn compile)
(2)測試(mvn test)
(3)打包(mvn package)
(4)安裝(mvn isntall)
(5)發佈(mvn deploy):
deploy想執行,必須進行配置, 而前4個可以隨時執行;
然而,並非一個項目都在我們自己的機器上 編譯-->發佈 全流程,因此在用別人開發的結果在
我們機器上編譯,必須先mvn clean清除一下項目編譯信息;
這5個命令的關係: 默認生命週期. 還有個站點生命週期(不常用).
2:構建項目之前,必須先mvn clean,把之前編譯信息清除掉;
從剛出生-->老年的過程;
清理生命週期
默認生命週期(重點)
站點生命週期
16)Maven概念模型圖:
(1)項目對象模型(pom.xml):
1:項目自身的座標:
groupId
artifactId
version
2:dependency(項目自身運行依賴的jar包)
獨立出來又叫做: 依賴管理模型(Dependency), 裏面放置的全是jar包的座標(3個信息):
groupId(公司組織的名稱)
artifactId(項目名)
version(版本號)
local: 本地倉庫找jar包
center: 中央倉庫找jar(聯網)
b2b: 私服遠程倉庫
再找不到,則需要從本地上傳jar包
3:plugin(運行環境信息)
jdk的插件
tomcat的插件
(2)默認生命週期
compile
test
package
install
deploy
每一個構建項目的命令都對應了maven底層的一個插件
17)Maven2大核心功能:
一鍵構建