Maven基礎
Maven的Apache公司開源專案,是專案的構建工具,用來依賴管理
1.maven的好處
- 使用傳統專案開發cim專案,專案大小幾十兆
- 使用maven開發幾百kb
同樣的程式碼,實現的功能都一樣,那麼maven專案是如何做到的?
可以初步推斷,maven專案中一定沒有jar包
沒有jar包,maven專案如何執行?
2.maven的好處如何實現
maven的兩大核心
- 依賴管理:對jar包管理過程
- 專案構建:專案在編碼完成後,對專案進行編譯,測試,打包,部署一系列的操作都通過命令來實現
通過maven命令將web專案釋出到tomcat
mvn tomcat:run
3.maven安裝 配置本地倉庫
maven程式安裝前提:maven程式純java開發,它的執行依賴jdk
4.maven專案標準目錄結構
5.maven常用命令(應用)
- clean:清理
mvn clean
將專案根目錄下的target目錄清理掉
- compile:編譯
mvn compile
將專案中的java檔案編譯成class檔案
- test:單元測試
mvn test
單元測試的類名有要求:xxxTest.java
將專案根目錄下src/test/java目錄下的單元測試類都會執行
- package:打包
mvn package
web project —> war包
java project —> jar包
將專案打包,打包專案根目錄下target目錄
- install:安裝
mvn install
解決本地多個專案公用一個jar包的問題,打包到本地倉庫
- maven專案的生命週期(瞭解)
在maven種存在”三套”生命週期,每一套生命週期相互獨立,互不影響,在一套生命週期內,執行後面的命令前面操作會自動執行
- ClwanLifeCycle:清理生命週期
Clean
- defaultLifeCycle:預設生命週期
compile,test,package,install,deploy
- siteLIfeCycle:站點生命週期
site
- 概念模型
兩個核心:依賴管理,專案構建
6.maven整合web專案案例
1.配置eclipse種maven環境
(1) 配置m2e外掛,Mars2版本自帶maven外掛
(2)需要配置maven程式
1.windows -> preferences -> maven -> installations -> add 新增本地maven
2.windows -> preferences -> maven -> User-setting 新增本地setting.xml及本地倉庫
3.windows -> show Windows -> maven Reo... ->local Reo... ->rebuild index 重建索引
2.maven整合servlet
建立好的maven專案有兩個錯誤
(1)缺少web.xml
(2)jdk編譯版本1.5,在pom.xml中新增依賴
建立servlet
3.依賴範圍
依賴範圍 | 對於編譯classpath有效 | 對於測試classpath有效 | 對於執行時classpath有效 | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | spring-core |
test | – | Y | – | Junit |
provided | Y | Y | – | servlet-api |
runtime | – | Y | Y | JDBC驅動 |
system | Y | Y | – | 本地的maven倉庫之外的倉庫 |
新增依賴範圍,預設是compile
provided:部署到tomcat後不再需要
問題:
如果將servlet-api這個jar包設定為compile,最終打包後就包含一個servlet-api.jar包,當war包部署到tomcat中,已存在servlet-api.jar包衝突,導致執行失敗
解決:
<scope>provided</scope>
總結:如果使用到tomcat自帶jar包,需要將專案中依賴作用範圍設定為:provided
4.執行專案
run as —> maven build… —>輸入 tomcat:run
5.除錯專案
debug as —> maven build… —>輸入 tomcat:run(記得新增原始碼)
7.總結
- 安裝
- maven標準目錄結構
- maven常用命令
- 使用eclipse開發maven專案
- pom.xml專案物件模型
(1)本專案的座標資訊
(2)本專案jdk編譯版本的資訊
(3)本專案依賴jar包資訊
_
1.傳遞依賴衝突解決(瞭解)
依賴傳遞:A(專案)依賴B,B依賴C(1.1版本),B是A的直接依賴,C就是A的依賴傳遞
匯入依賴D,D依賴C(1.2版本)
1.1maven自己調解原則
1.第一宣告者優先原則
誰先定義就用誰的傳遞依賴
2.路徑近者優先原則
直接依賴級別高於傳遞依賴
2.排除依賴
3.版本鎖定(推薦使用)
2.通過maven整合ssh框架(重點)
2.1搭建struts2環境
- 建立struts2配置檔案:struts.xml
- 在web.xml中配置struts的核心過濾器
2.2搭建spring環境
- 建立spring配置檔案:applicationContext.xml
- 在web.xml種配置監聽器:ContextLoaderListener
2.3搭建Hibernate環境
- 建立hibernate核心配置檔案
2.4struts2跟spring整合
整合關鍵點:action物件的建立,交給spring建立
- 建立Action類
- 將Action物件配置到spring配置檔案中
- 在struts.xml中在action節點中class屬性配置為spring工程中action物件bean的id
2.5spring與hibernate整合
整合關鍵點:1.資料來源dataSource交給spring 2.SessionFactory物件建立交給spring物件 3.事務管理