一、 maven概述
maven是什么
Apache组织开发的一个开源跨平台的集构建、依赖管理、项目管理于一身的工具(跨平台体现在不同操作系统上都能使用)
为什么要使用maven
解决构建部署项目,第三方依赖比较繁琐的问题,进行统一管理与配置,提供了一个标准的最佳实践目录结构,更高效的来开发管理项目
实现流程
可以重复利用之前使用的jar,不用每次去下载
maven项目结构
二、 maven安装
1、检查JDK 的版本与需要的maven版本
Maven 不同的版本对 JDK 是有要求的,具体请看官网https://maven.apache.org/docs/history.html。
2、安装
- 把apache-maven-x.x.x-bin.zip解压到目录中(目录路径最好不要有空格和中文)。
3、配置环境变量
- 配置系统环境变量,MAVEN_HOME,指向maven的根目录;
- 配置环境变量Path,将%MAVEN_HOME%\bin追加到Path中。
4、验证Maven安装
mvn –v ,如下效果即代表安装成功
三、 maven相关的命令
- 需要在cmd下切换到项目所在目录
mvn compile:编译
mvn clean:清除 :字节码有问题破损时使用,会清除项目下的target文件
mvn test:测试
mvn package:打包
mvn install:打包,本地仓库也放一份
四、Maven 设置
1、本地仓库
-
运行过 Maven 命令才会在你的用户目录生成一个.m2目录,该目录下有个目录名 repository,这个就是所谓的本地仓库,主要存放是一些下载的jar文件。
-
本地仓库默认位置在 用户目录/.m2/repository,本地仓库不建议在系统盘
本地仓库修改为其他路径<localRepository>本地仓库路径</localRepository>
,修改后用户下的本地仓库文件夹repository可以删除
2、配置中央仓库镜像
配置一个中央仓库的镜像来降低下载失败的概率
- setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库地址 -->
<localRepository>D:\codeSoftware\Maven\mvn-rep</localRepository>
<mirrors>
<!-- 阿里仓库镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
五、Eclipse 中 Maven 的配置
1、配置安装的 Maven
2、设置 setttings.xml和本地仓库
3、下载源码设置
六、 搭建基于Maven构建的JavaSE项目
1、创建项目
2、pom.xml 文件
用于填写项目信息,打包方式,添加依赖等。
3、添加依赖
-
建索引添加依赖
显示索引菜单
禁用远程仓库索引
建立本地仓库索引
在pom.xml 右键添加依赖
在添加依赖的对话框中选择需要添加的依赖
网站搜索拷贝添加依赖
访问不到电脑使用手机的热点试试,或者翻墙。
网站:官网 https://mvnrepository.com/。
阿里 https://maven.aliyun.com/mvn/search
使用Maven命令
-
清除
-
打包
菜单自有的命令有限,没有打包的菜单,所以可以右键项目:
七、搭建基于Maven构建的JavaWeb项目
1、创建项目
此时注意打包方式为war
2、添加web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>
3、修改项目编译运行版本
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source><!-- 更新项目(Maven | Update Project)之后,会修改项目的编译版本 -->
<target>1.8</target><!-- 更新项目之后,会修改项目的运行版本 -->
<encoding>utf-8</encoding><!-- 更新项目之后,Java 编译器读取你的文件用的编码 -->
</configuration>
</plugin>
之后右键项目更新项目
4、添加依赖
5、编写Servlet与JSP
6、配置Tomcat插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8080</port> <!-- 端口 -->
<path>/</path> <!-- 上下路径 -->
<uriEncoding>UTF-8</uriEncoding> <!-- 针对 GET 方式乱码处理 -->
</configuration>
</plugin>
7、启动Tomcat
- 常见错误:
- 端口占用:(未正常关闭服务器,多次点击启动,可进任务管理器关闭javase进程)
Netstat命令
1)、“运行”中输入cmd;
2)、在命令行中输入netstat -ano,得到端口号对应的PID; -
路径问题:
- 右键要启动的项目
如下输入tomcat7:run,Debug 启动。tomcat7为<artifactId>tomcat7-maven-plugin</artifactId>
里的前缀,要完全一致
八、概念解释
数学中的坐标在空间中,使用 X、Y、Z 三个向量可以唯一的定位空间中的任意一个点。
1、Maven中的坐标
标识项目在仓库中的位置。主要由下面构成:
groupId:项目名称,一般使用公司或组织域名倒写,域名具有唯一性,区分不同公司;
artifactId:项目中 Maven 项目/模块名称,区分同一个公司的项目;
version:项目版本,区分同一个项目不同时期的特点。
2、依赖
打包时正在校验
<scop>
- Maven在编译,测试,运行的时候,各需要一套classpath(比如编译的时候会有编译的 classpath,测试的时候会有测试的 classpath)。
scope表明该依赖的项目和三个classpath 的关系,即表示依赖什么阶段起作用,什么阶段
scope 主要可选值:
a、compile:默认,适用于所有阶段,会随着项目一起发布,在编译,测试,运行时都有效;
b、provided:编译和测试阶段使用;典型的如 servlet-api.jar,打包时不需要,容器来提供;
c、runtime:测试和运行阶段使用,用于接口和实现分离,典型的如 jdbc 具体驱动实现;
d、test:测试阶段使用,不会随项目发布,如 junit。
传递性
Maven的依赖是具有传递性的,
比如 A -> B,B -> C,那么A间接的依赖于C,这就是依赖的传递性
依赖的传递性可以解决依赖繁琐的问题。