Maven:maven简介、安装与整合web项目、maven常用命令、依赖管理
一、Maven简介:
1、什么是Maven:
Maven 是专门用于构建和管理Java相关项目的工具。
2、maven的两大核心是:
(1)依赖管理:就是对jar的统一管理过程;
(2)项目构建:项目编码完成后,对项目进行编译、测试、打包、部署一系列的操作都通过命令来实现。
3、Maven的好处:
(1)不再拷贝jar包。项目不需要存放jar包,导致项目源代码小。
(2)使用maven开发的工程,如果环境统一,导入别的maven的项目不会报错。
(3)代码耦合度进一步降低。
(4)方便项目进行升级。
(5)节省人力成本。
二、Maven的安装:
Maven程序安装的前提:maven是基于java环境开发,它的运行依赖jdk。
1、下载apache-maven-3.5.0-bin.zip,解压到本地磁盘(解压目录最好不要有中文和空格)
2、配置环境变量:
(1)jdk的环境变量必须是:JAVA_HOME
(2)配置maven的环境变量:MAVEN_HOME
(3)将MAVEN_HOME环境变量配置到path环境变量中:
3、测试是否安装成功:查询maven版本信息:
出现以下信息则表示安装成功:
4、配置本地仓库:
(1)仓库类型:
(2)创建本地仓库(就是创建一个目录):
(3)配置本地仓库:让maven程序知道仓库在哪里:
三、Maven整合web项目(基于Eclipse):
1、配置m2e插件,现在的版本基本已经自带了,不需配置;
2、配置maven程序:
3、配置user settings:
4、构建索引:
5、创建maven的web工程:
6、创建好的项目有两个错误:
(1)web.xml文件缺失:
解决方法:
第一种:在指定目录位置手动创建;
第二种:通过工具生成web.xml文件
(2)jdk编译的版本是1.5,在pom.xml中添加插件:
解决方法:
第一种:
<build>
<plugins>
<!-- 设置编译版本为1.7 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
第二种:通过插件生成配置信息:
在pom.xml文件中,单击右键:
7、创建servlet:
编译报错,原因:确实servlet-api-xx.jar包:
解决:在pom.xml文件中添加依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
8、运行:输入命令:tomcat7:run
9、debug方式调试项目:
四、Maven的基础知识:
1、maven项目标准的目录结构:
对项目进行细分:
2、maven的常用命令:
(1)clean:清理:将项目根目录下的targer目录清理掉
(2)compile:编译:将项目中的.java文件编译为.class文件
(3)test:单元测试:将项目根目录下src/test/java目录下的单元测试类都会执行,单元测试类名有要求:XxxTest.java
(4)package:打包:将项目打包,打包到项目根目录下target目录:
web project ---war包
java project ---jar包
(5)install:安装:打包到本地仓库,解决本地仓库多个项目公用一个jar包
(6)maven项目的生命周期:
在maven中存在“三套”生命周期,每一套生命周期相互独立,互不影响。在一套生命周期内,执行后面的命令,前面的操作会自动执行。
①CleanLifeCycle:清理生命周期:clean
②defaultLifeCycle:默认生命周期:compile、test、package、install、deploy
③siteLifeCycle:站点生命周期:site
3、依赖范围:
添加依赖:默认依赖范围是compile
provided:运行时部署到tomcat后不再需要
如果将servlet-api.jar设置为compile,打包后项目包含servlet-api.jar,war包部署到tomcat跟tomcat中存在的servlet-api.jar包冲突,导致运行失败:
解决:修改依赖的范围:
4、依赖管理:
(1)传递依赖:A依赖B,B依赖C,B是A的直接依赖,C是A的传递依赖。
遵循原则:
--第一声明者优先原则:谁先定义的就用谁的传递依赖
--路径近者优先原则:直接依赖级别高于传递依赖
(2)排除依赖:
(3)版本锁定:(重点)
5、依赖传递的范围: