Maven的简介
一、 什么是Maven
Maven是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目。
二、Maven好处
如果普通的传统项目大小为:20M,Maven项目的大小为:700多KB。分析:1、maven项目为什么这么小?没有jar。2、需要jar吗?肯定需要。
三、依赖管理
四、Maven的好处
1、依赖管理
就是对jar包的统一管理 可以节省空间
2、一键构建
一个 tomcat:run就能把项目运行起来
Maven能干的事:编译、测试(junit)、运行、打包、部署
3、可以跨平台
4、应用于大型项目 可以提高开发效率
分析:用户管理 订单管理 支付管理 。。。。。
Maven 分模块开发
互联网项目 按业务分
传统项目 按层分 entity dao service web
五、Maven的目录结构
main -> 主目录
java -> 放的都是java代码
resource -> 配置文件:properties xml
webapp
test -> 测纸目录
java -> 纯java代码 Junit测试
resource -> Junit测试所用的配置文件,如果里面没有配置文件默认从main里找
六、Maven的常用命令
clean |
清理编译的文件 |
compile | 编译主目录的文件 |
test | 编译并运行test目录的代码 |
package | 打包 |
install | 把项目发布到本地仓库 |
tomcat:run | 一键启动 |
七、Maven的生命周期
Compile test package install deploy(发布到私服)
三种生命周期
Clean生命周期
Clean
Default生命周期
Compile test package install deploy
Site生命周期
Site
不同的生命周期的命令可以同时执行:Mvn clean package
八、依赖范围
1、Compile struts2-core
编译(compile)时需要 测试时需要,,运行时需要,打包时需要
2、Provided jsp-api.jar servlet-api.jar
编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要
3、Runtime 数据库驱动包
编译时不需要,测试时需要,,运行时需要,打包时需要
4、Test junit.jar
编译时不需要,测试时需要,运行时不需要,打包也不需要
九、依赖传递
只添加了一个struts2-core依赖,发现项目中出现了很多jar,这种情况叫依赖传递。
十、依赖版本冲突的解决
1、 第一声明优先原则
<dependencies> <!-- spring-beans-4.2.4 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <!-- spring-beans-3.0.5 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> </dependency>
2、 路径近者优先原则
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version> </dependency>
3、 排除原则
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency>
4、 版本锁定原则
<properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version>5.0.7.Final</hibernate.version> <struts.version>2.3.24</struts.version> </properties> <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement>