maven介绍
javaWeb中,遇到的一个烦恼,每次都要导jar包,忘记了就会很麻烦,随着项目会变大,jar包管理变的及其麻烦,所以Maven应运而生,Maven并不是最早的管理项目的工具。
核心思想:约定大于配置
Maven会给你规定好怎么去书写java代码。必须按照这个规范来。
maven的安装及配置
下载安装Maven
和Tomcat一样,Maven也属于apache;
下完完毕后会得到一个压缩包。
我们需要解压到一个自己电脑上存放环境的地方‘;
配置环境变量
打开此电脑----属性-----高级系统设置------环境变量--------系统变量-----------新建(设置自己安装路径)
找到path设置到安装的bin目录下:
测试是否配置成功:
打开搜索框输入:cmd然后输入:mvn -version回车
可以看到设置成功了
修改配置文件
这里有两个地方需要配置:
- 阿里云镜像
- 仓库路径
首先配置阿里云镜像:配置目的是为了更快的让maven下载jar包;
配置xml:
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
将这一段复制到以下位置:
接下来配置默认仓库位置:
我们需要新建一个本地仓库的位置,不建议使用默认的,因为在c盘。我这里在maven的安装目录下建立了一个repository的文件夹
然后再配置文件中修改本地仓库的路径
到这一步为止:
Maven就彻底安装好了
疑问:为什么要配置镜像;
回答:因为Maven默认节点在国外,国内有墙,下载jar包会比较慢,也有可能失败,所有建议配置一个国内的镜像,推荐使用阿里云镜像;
IDEA中使用maven注意事项
有些文件夹有的不会自动生成,我们需要手动创建,但是呢,手动创建的文件夹没有权限写java代码或者存放资源,我们需要手动进行标记。怎么配置呢?
对于相应的文件夹我们设置成相应的文件格式就可以了;
疑问:target是什么?回答:输出目录文件,对应我们项目中的out文件夹。
idea中配置maven
maven设置地址
对于本项目:
对于默认项目我们也可以设置:
项目结构测试位置
利用Maven管理jar包
无论要使用什么jar包,都需要去pom.xml中配置;
在dependencies下面配置项目的jar包。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
如何找到这些jar包所在的位置呢?
推荐去Maven中央远程仓库中下载:地址:https://mvnrepository.com/
本质分析:
Maven会根据配置文件去对应镜像站点下载相应的jar包;
在通过配置文件去本地读取jar包。
手动创建一个Maven项目
随便建立一个空文件夹代表我们的项目,使用IDEA打开
配置环境输出目录,文件标记,jdk等。。。
检查一下Maven路径
编写pom.xml核心文件:
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.kuang</groupId>
<artifactId>MavenSelf</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
</project>
然后让idea识别
我们现在来导入依赖,即jar包
通过<dependencies></dependencies>标签
创建Maven项目成功!
常见问题
假如你的项目在IDEA中可以运行成功,但是无法发布运行,可以就是没有配置资源过滤
我们需要手动配置这个
<!--用来存放一些和项目构建相关的东西-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>