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