Maven的Apache公司開源項目,是項目的構建工具,用來依賴管理java
一樣的代碼,實現的功能都同樣,那麼maven項目是如何作到的?web
能夠初步推斷,maven項目中必定沒有jar包
沒有jar包,maven項目如何運行?spring
maven的兩大核心shell
經過maven命令將web項目發佈到tomcatwindows
mvn tomcat:run
maven程序安裝前提:maven程序純java開發,它的運行依賴jdkapi
mvn clean
將項目根目錄下的target目錄清理掉tomcat
mvn compile
將項目中的java文件編譯成class文件app
mvn test
單元測試的類名有要求:xxxTest.java
將項目根目錄下src/test/java目錄下的單元測試類都會執行框架
mvn package
web project ---> war包
java project ---> jar包
將項目打包,打包項目根目錄下target目錄eclipse
mvn install
解決本地多個項目公用一個jar包的問題,打包到本地倉庫
在maven種存在"三套"生命週期,每一套生命週期相互獨立,互不影響,在一套生命週期內,執行後面的命令前面操做會自動執行
- ClwanLifeCycle:清理生命週期 Clean - defaultLifeCycle:默認生命週期 compile,test,package,install,deploy - siteLIfeCycle:站點生命週期 site
兩個核心:依賴管理,項目構建
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(記得添加源碼)
_
依賴傳遞:A(項目)依賴B,B依賴C(1.1版本),B是A的直接依賴,C就是A的依賴傳遞
導入依賴D,D依賴C(1.2版本)
誰先定義就用誰的傳遞依賴
直接依賴級別高於傳遞依賴
整合關鍵點:action對象的建立,交給spring建立
整合關鍵點:1.數據源dataSource交給spring 2.SessionFactory對象建立交給spring對象 3.事務管理