1、Maven背景
项目中jar包资源越来越多,jar包中的管理越来越繁琐
要为每个项目手动导入所需的jar,需要搜集全部jar
项目中的jar包如果需要版本升级,就需要再重新搜集jar
项目的jar在不同的项目中保存了多份,存储冗余,散乱
java项目需要一个统一的便捷管理方案
2、简介
Maven是一个基于项目对象模型的概念的纯Java开发的开源的项目管理工具。
主要来管理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译,打包,测试,部署)。
此外还能分块开发,提高开发效率。
3、Maven安装
网址:https://maven.apache.org/
-
下载后解压
-
配置环境变量
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 系统path中配置 %MAVEN_HOME%\bin
-
测试安装是否成功
- mvn -version
(配置好变量后,并确保配置无误。若测试时,仍发现有问题,比如在管理员模式下才可以成功,而普通模式下不能成功,则尝试移动环境变量的顺序,比如将其放到最上面,或将maven环境和java环境都移到最上面。)
4、maven配置
4.1添加本地仓库
maven的conf目录下settings.xml是maven的配置文件,对其做如下配置
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
在apache-maven-3.8.1目录下建一个maven-repo文件夹
MAVEN中存储jar包的位置
-->
<localRepository>D:\APPinstall\apache-maven-3.8.1\maven-repo</localRepository>
4.2、配置jdk
<profile>
<id>yourjdk</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<activeProfiles>
<activeProfile>yourjdk</activeProfile>
</activeProfiles>
<!--使配置生效-->
5、仓库
5.1、本地仓库
D:\APPinstall\apache-maven-3.8.1\maven-repo
在Settings.xml中配置的maven-repo目录
5.2、远程仓库
-
私服
-
公共仓库
-
除中央仓库外,还有其他公共仓库
-
中央仓库在国外,下载依赖速度慢,所以要配置一个国内的公共仓库代替中央仓库(镜像)
-
<!--settings.xml中添加以下配置--> <mirror> <id>aliyun</id> <!--中心仓库的mirror(镜像)--> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <!-- aliyun仓库地址以后所有要指向中心仓库的请求,都会指向aliyun仓库--> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
-
-
中央仓库
- 中央仓库的地址:http://repo.maven.apache.org/maven2/
- 不需配置
6、idea-maven
6.1、在idea中关联maven
6.2、基于Maven构建项目
-
构建一个空maven项目
-
定义项目标识
- 组,公司的域名
- 项目名
- 版本
- 确定项目信息
6.3、maven项目结构
-
src--------------------------项目中所有内容的存放位置
-
main----------------项目所有的主程序以及相关的配置文件
- java----------放置所有的主程序.java文件
- resources-相关的配置文件
-
test-----------------所有测试程序以及配置文件
- java----------放置所有的测试程序.java文件
- resources-测试程序相关的配置文件(自己添加)
-
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.xiaodu</groupId> <artifactId>mavenTest5_8</artifactId> <version>1.0-SNAPSHOT</version> <!--设置项目的类型 jar(默认) war--> <packaging>jar</packaging> <!--定义项目所需要的的依赖--> <dependencies> <!--依赖--> </dependencies> </project>
-
-
配置标识
6.4、导入依赖jar
- 建好项目后,需要导入需要的jar
- 每个构建都有自己的标识(groupld+artifactid+version)
- 在maven项目中只需要配置坐标,maven便会自动加载对应的依赖删除坐标则会移除依赖
- 查找依赖
https://mvnrepository.com/
6.5、web依赖
导入JSP,servlet,JSTL依赖,是项目具有web编译环境
<dependency>
<!--jstl支持-->
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<!--servlet支持-->
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<!--jsp编译环境-->
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
main下级目录构建webapp目录
webapp目录下建WEB-INF目录
webapp目录下建web.xml文件,web.xml模板如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xm1/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--这是一个空白的web.xml文件模板-->
</web-app>
配置serclet
java目录下建com.test01.servlet包,建HttpServlet子类
package com.test01.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/shine")
public class ShineServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("shine servlet");
//转发跳转 index.jsp
req.getRequestDispatcher("/index.jsp").forward(req, resp);
}
}
webapp目录下建index.jsp文件
配置Tomcat
6.6、maven资源到处失败的问题
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
**/*.properties **/*.xml false ```