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.事务管理