【学习笔记】Maven
什么是Maven?
maven是项目架构管理工具,用来管理项目,如自动导入jar包等。
Maven下载和配置
下载
官网:
下载完成后解压到自己的环境目录下
配置环境变量
需要配置两个:
-
MAVEN_HOME:自己maven的目录
-
M2_HOME:maven目录下的 bin 目录
配置M2_HOME,目的是在springboot、springcloud等引用了M2_HOME这个地址,如果不配置,他就会找不到
配置成功后,在cmd 中输入 mvn -version 检验是否配置成功
阿里云镜像
-
mirrors 镜像
-
作用:加速下载
-
-
国内建议使用阿里云镜像
需要配置的文件:在maven目录下 conf 目录下的 settings.xml 文件
在mirrors标签下,加入如下代码:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置本地仓库
maven仓库:在maven中,仓库就是一个位置,用来存放项目中的jar包等
maven仓库有三种类型:本地、中央、远程
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/repository/ 的仓库目录。
Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
我们现在在maven目录下新建一个目录,作为maven本地仓库,并且在配置文件中定义该路径
<localRepository>E:\JAVA\apache-maven-3.8.6\maven-repo</localRepository>
创建maven项目
-
创建项目选择JDK和模板
-
选择存放目录和文件名
-
选择maven环境、配置文件、本地仓库
-
等待maven初始化(第一次需要导入包)
在IDEA中配置Maven
在IDEA中经常会出现一个问题,就是在项目自动创建完成后,这个Maven home 会使用IDEA默认,所以需要我们手动更改。
在IDEA中标记文件夹
另一种方式:
在IDEA中配置tomcat
解决警告问题:
为什么会有这个警告呢?
因为我们访问一个网站,必须要指定一个文件夹的名字,然后才能访问里面的资源,如果不添加这个项目的war包,就没有文件夹供tomcat去访问
虚拟路径映射:
在图中标出来的区域是默认的文件夹名称
如果什么都不写,他会访问 localhost:8080
如果写上 /wzt ,他会访问 localhost:8080/wzt
相当于把webapp命名为wzt了,即访问wzt下的资源
Maven pom配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--Maven版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--配置的GAV-->
<groupId>org.example</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--项目的打包方式
jar:java应用
war:javaweb应用-->
<packaging>war</packaging>
<!--项目名称-->
<name>javaweb-01-maven Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!--配置-->
<properties>
<!--项目的默认构建编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--编译版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--项目依赖-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--项目构建-->
<build>
<finalName>javaweb-01-maven</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
maven的高级之处就是:它会帮你导入这个jar包所依赖的其他jar包
maven由于约定大于配置,所以可能会遇到一个问题:即配置文件无法被导出或者无法生效
解决方案:
在bulid 标签下加如下代码:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
Maven仓库
当我们写了一个java类去继承HttpServlet,发现报错了,原因可能是没有导入依赖
我们去选择添加maven依赖
就会搜到这些依赖,我们去添加,然后导入即可
如果在本地仓库找不到该依赖,我们就可以去maven仓库搜索,然后手动添加到pom.xml中
maven仓库地址: