10節(jié)課學(xué)會(huì)使用Maven構(gòu)建項(xiàng)目
今日課程大綱
?Maven 簡(jiǎn)介 配置?
Maven 運(yùn)行環(huán)境?
Maven 項(xiàng)目創(chuàng)建 Ant 和 Maven?
項(xiàng)目簡(jiǎn)單對(duì)比 Maven?
項(xiàng)目之間的關(guān)系?
War 類(lèi)型項(xiàng)目創(chuàng)建(tomcat 插件和資源拷貝插件)
分布式介紹 聚合項(xiàng)目演示 熱部署 [知識(shí)點(diǎn)詳解]?
一.Ant?
1.Ant 和 Maven 都是項(xiàng)目構(gòu)建工具?
2.在項(xiàng)目的運(yùn)行編輯打包等過(guò)程都需要依賴(lài)于 ant 構(gòu)建工具?
二. 分布式
1. 傳統(tǒng)項(xiàng)目部署: 1.1 新建一個(gè)項(xiàng)目,通過(guò)不同的包區(qū)分不同的模塊.?
1.2 把這一個(gè)項(xiàng)目發(fā)布服務(wù)器的 tomcat 中?
2. 分布式項(xiàng)目部署.(適用于高負(fù)載情況下)
2.1 把一個(gè)完整的項(xiàng)目拆分成多個(gè)項(xiàng)目,把拆分后的項(xiàng)目分別部署 到對(duì)應(yīng)的服務(wù)器(tomcat)中的過(guò)程就叫做分布式項(xiàng)目部署.?
2.1.1 把傳統(tǒng)項(xiàng)目包換成一個(gè)單獨(dú)的項(xiàng)目.?
三.maven 簡(jiǎn)介?
1.基于 Ant 的構(gòu)建工具,Ant 有的功能 Maven 都有,額外添加了其他功 能.?
2.運(yùn)行原理圖.?
2.1 本地倉(cāng)庫(kù):計(jì)算機(jī)中一個(gè)文件夾,自己定義是哪個(gè)文件夾.?
2.2 中央倉(cāng)庫(kù):網(wǎng)上地址 https://repo1.maven.org/maven?
2.2.1 下載速度慢--> 配置國(guó)內(nèi)鏡像?
2.3 保證 JDK 版本和開(kāi)發(fā)環(huán)境一致,如果不配置 1.4 或 1.5

3.坐標(biāo)
3.1 每一 jar 文件都有一個(gè)唯一坐標(biāo).通過(guò)坐標(biāo)可以精確確定是哪 個(gè) jar?
3.2 坐標(biāo)組成?
3.2.1 Group ID : 公司名.公司網(wǎng)址倒寫(xiě)?
3.2.2 Artifact ID : 項(xiàng)目名?
3.2.3 Version : 版本?
4.pom
4.1 英文名稱(chēng)(Project Object Mode)?
4.2 項(xiàng)目對(duì)象模型?
4.2.1 把 project 當(dāng)作對(duì)象看待.?
4.2.2 通過(guò) maven 構(gòu)建工具可以讓對(duì)象(項(xiàng)目)和對(duì)象(項(xiàng)目)之 間產(chǎn)生關(guān)系?
5.網(wǎng)址(查看坐標(biāo))?
http://mvnrepository.com/?
四.新建 Maven 項(xiàng)目?
1. New--> Maven project?
2. 勾選復(fù)選框,表示創(chuàng)建一個(gè)簡(jiǎn)單 Maven 項(xiàng)目(不應(yīng)用任何模板)

3. 填寫(xiě)項(xiàng)目信息?
3.1 Packaging: 項(xiàng)目的類(lèi)型,最終會(huì)被打包成什么類(lèi)型.?
3.1.1.?jar : java 項(xiàng)目?
3.2 war: web 項(xiàng)目?
3.3 pom:邏輯父項(xiàng)目?
3.3.1 只要一個(gè)項(xiàng)目有子項(xiàng)目必須是 pom 類(lèi)型.

五. Maven 項(xiàng)目目錄結(jié)構(gòu)(jar 類(lèi)型)?
1. 截圖

2. src/main/java 真實(shí)目錄的快捷目錄,寫(xiě) java 代碼?
3. src/main/resources 快捷目錄?
3.1 存放配置文件.?
3.2 雖然看見(jiàn) resources 但是里面所有配置文件最終會(huì)被編輯放入 到 classes 類(lèi)路徑.?
4. src/test/java 寫(xiě)測(cè)試 java 代碼?
5. src/text/resources 測(cè)試的配置文件夾?
6. pom.xml maven 的配置文件?
6.1 當(dāng)前項(xiàng)目所依賴(lài)的其他項(xiàng)目或 jar 或插件等?
六. Maven 項(xiàng)目之間的關(guān)系?
依賴(lài)關(guān)系
1.1 標(biāo)簽<dependency>把另一個(gè)項(xiàng)目的 jar 引入到當(dāng)過(guò)前項(xiàng)目
1.2 自動(dòng)下載另一個(gè)項(xiàng)目所依賴(lài)的其他項(xiàng)目
2. 繼承關(guān)系.
2.1 父項(xiàng)目是 pom 類(lèi)型
2.2 子項(xiàng)目jar或war,如果子項(xiàng)目還是其他項(xiàng)目的父項(xiàng)目,子項(xiàng)目也 是 pom 類(lèi)型.
2.3 有繼承關(guān)系后,子項(xiàng)目中出現(xiàn)<parent>標(biāo)簽
2.3.1 如果子項(xiàng)目和<groupId>和<version>與父項(xiàng)目項(xiàng)目,在子 項(xiàng)目中可以不配置<groupId>和<version>
2.4 父項(xiàng)目 pom.xml 中是看不到有哪些子項(xiàng)目.在邏輯上具有父子 項(xiàng)目關(guān)系

3. 聚合關(guān)系.?
3.1 前提是繼承關(guān)系.父項(xiàng)目會(huì)把子項(xiàng)目包含到父項(xiàng)目中.?
3.2 子項(xiàng)目的類(lèi)型必須是 Maven Module 而不是 maven project?
3.3 新建聚合項(xiàng)目的子項(xiàng)目時(shí),點(diǎn)擊父項(xiàng)目右鍵新建 Maven Module?
3.4 具有聚合關(guān)系的父項(xiàng)目,在 pom.xml 中<modules>


4. 聚合項(xiàng)目和繼承項(xiàng)目區(qū)別?
4.1 在語(yǔ)意上聚合項(xiàng)目父項(xiàng)目和子項(xiàng)目關(guān)系性較強(qiáng)?
4.2 在語(yǔ)意上單純繼承項(xiàng)目父項(xiàng)目和子項(xiàng)目關(guān)系性較弱?
5. <dependencyManagement> 寫(xiě)在父項(xiàng)目?
5.1 作用:聲明可能使用到的所有 jar?
5.2 子項(xiàng)目中只需要有坐標(biāo)的<groupid>和<artifactid>,<version>繼 承父項(xiàng)目?
5.3 在父項(xiàng)目中<properties>把所有版本好進(jìn)行統(tǒng)一管理?
5.4 父項(xiàng)目 pom.xml?
5.4.1 <properties>子標(biāo)簽名稱(chēng)自定義?
5.4.2 ${名字} 引用標(biāo)簽的值


5.5 子項(xiàng)目

七. 創(chuàng)建 war 類(lèi)型項(xiàng)目?
1. 創(chuàng)建 maven project 時(shí)選擇 packaging 為 war?
2. 在 webapp 文件夾下新建 META-INF 和 WEB-INF/web.xml

3. 在 pom.xml 中添加 java ee 相關(guān)的三個(gè) jar 3.1 <scope> jar 有效范圍 provided 表示編譯期生效,不會(huì)打包發(fā)布 到 tomcat 中



4.配置 tomcat 插件



5. 右鍵項(xiàng)目--> run as --> maven build-->Goals 中輸入 clean tomcat7:run
八. 資源拷貝插件?
1.maven 默認(rèn)只把 src/main/resources 里面的非.java 文件進(jìn)行編譯到 classes 中?
2.如果希望 src/main/java 下的文件也被編輯到 classes 中,在 pom.xml 中配置
2.1 下面內(nèi)容配置在<build>中


九. 熱部署?
1. 修改 tomat/conf/tomcat-users.xml 添加

2. 在 maven 項(xiàng)目的 pom.xml 中 tomcat 插件的<configuration>里配置



3. 右鍵項(xiàng)目--> run as --> maven build(以前寫(xiě)過(guò),選擇第二個(gè)) -->輸入?
3.1 tomcat7:deploy 第一次發(fā)布?
3.2 tomcat7:redeploy 不是第一次發(fā)布