1. IDEA中配置Maven
1) 打开IDEA 创建一个新的project
2) 首先打开IDEA 选择File --> Settings --> 搜素maven,就会看到如下界面
3)修改默认配置配置
2. 创建Maven工程
在IDEA中配置好maven后, 接下来我们使用maven去快速的去构建一个 JavaWeb项目
1) project创建好以后, 选择创建module
2) 选中创建一个 maven 工程
3) 点击 Next填写项目信息
进行一下修改
4) 创建好的工程,长这个样子
Maven目录说明:
src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如数据库的配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
target —— 项目输出位置,编译后的class 文件会输出到此目录
pom.xml ——maven 项目核心配置文件
3. Maven工程改造
当前创建的maven项目是一个 普通的Java项目,不是web项目,我们要进行一下改造
1) 在main目录下创建一个webapp文件夹
2) 选择 project Structure ---> facets---> 点击+号 添加web ---> 选择当前工程hello_maven
3) 修改路径信息
修改前
4)修改为 我们的 webapp目录
修改后
5) 点击ok 后,项目就变为了web项目, 在webapp目录下再创建一个 index.jsp,就OK了
4. pom核心配置文件
一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的信息、项目依赖、引入插件等等。
1) 创建一个Servlet, 缺少jar包报错, 要解决问题,就是要将 servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet的坐标,从而导入它的 jar
2) 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.lagou</groupId>
<artifactId>hello_maven</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
</project>
3) 一个Maven工程就是由`groupId`,`artifactId `和 `version` 作为唯一标识, 我们在引用其他第三方库的时候,也是通过这3个变量确定。
-
坐标的概念
-
在maven中坐标就是为了定位一个唯一确定的jar包。
-
maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范,拥有了统一规范,就可以把查找工作交给机器
-
-
Maven坐标主要组成(GAV) - 确定一个jar在互联网位置
标签 | 含义 |
groupId | 定义当前Maven组织名称,通常是公司名 |
artifactId | 定义实际项目名称 |
version | 定义当前项目的当前版本 |
packaging | 打包类型 jar:执行 package 会打成 jar 包 war:执行 package 会打成 war 包 |
dependency | 使用 `<dependency> `声明一个依赖后,Maven就会自动下载这个依赖包 |
4) maven 的依赖管理, 是对项目所依赖的 jar 包进行统一管理。
标签 | 含义 |
dependencies | 表示依赖关系 |
dependency | 使用 `<dependency> `声明一个依赖后,Maven就会自动下载这个依赖包 |
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
5) 坐标的来源方式
添加依赖需要指定依赖 jar 包的坐标,但是很多情况我们是不知道 jar 包的的坐标,可以通过如下方式查询: 从网站中搜索即可
5.1) 输入网址,进入网址 , 进行查询
5.2) 点击进入后,可以看到各个版本的信息,选择3.1.0
5. 添加插件
1) 添加编译插件, 设置 jdk 编译版本
本教程使用 jdk11,需要设置编译版本为 11,这里需要使用 maven 的插件来设置
在pom中加入如下配置:
<!-- properties 是全局设置,可以设置整个maven项目的编译器 JDK版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 重点 -->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<!-- 在build中 我们需要指定一下项目的JDK编译版本,maven默认使用1.5版本进行编译
注意 build 与 dependencies是平级关系,标签不要写错位置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
6. 运行Maven项目
1) 完善项目代码
ServletDemo01
@WebServlet("/demo01")
public class ServletDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hello maven!!!!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>这是我的第一个maven工程!</h1>
</body>
</html>
2) 配置tomcat ,部署项目
3) 运行项目, 默认访问 index.jsp
4) 访问Servlet
http://localhost:8080/hello_maven/demo01
7. Maven的常用命令
1) 一个maven项目生命周期
使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些 过程规范为一个生命周期,如下所示是生命周期的各各阶段:
maven 通过执行一些简单命令即可实现上边生命周期的各个过程
命令 | 说明 |
mvn compile | 完成编译操作 , 执行完毕后,会生成target目录,该目录中存放了编译后的字节码文件。 |
mvn clean | 执行完毕后,会将target目录删除. |
mvn test | 执行完毕后,会在target目录中生成三个文件夹: surefire、surefire-reports(测试报告)、test-classes(测试的字节码文件) |
mvn package | 完成打包操作, 执行完毕后,会在target目录中生成一个文件,该文件可能是 jar、war |
mvn install | 执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作 ,执行完毕后,会在本地仓库中出现安装后的jar包,方便其他工程引用 |
2) idea中安装好maven后, 在界面左侧有一个maven视图, 里面有对应的命令插件,可以执行上面表格中的命令
3) 工具栏介绍
1.根据pom.xml文件重新导入所有Maven项目和依赖,刷新
2.创建源码(重新编译)并更新目录
3.下载源码或文档
4.添加Maven项目
5.执行生命周期中的阶段,选中lifecycle选项中生命周期中的一个阶段(phase),才能点击执行。
6.运行Maven生命周期或插件
7.切换离线模式,就是关闭和远程仓库的链接,从本地仓库中获取,也不能将jar包提交到远程仓库
8.是否跳过测试,点击选中就可以跳过测试,在点击选择取消跳过测试
9.展示当前选中的maven项目jar包的依赖,并且可以直接在图形化依赖图上进行排除依赖操作
10.收起下面展开的视图
11.跳转到maven的Setting页面
8. 依赖范围介绍
1) A 依赖 B,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围,依赖范围包 括:
依赖范围 | 说明 |
compile | 编译范围,指 A在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。 |
provided | provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依 赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。 |
runtime | runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。 |
test | test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以test范围依赖不会被打包。 |
system | system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用 |
2) 项目中添加的坐标 ,并指定依赖范围
<dependencies>
<dependency>
<!-- 项目名称 -->
<groupId>javax.servlet</groupId>
<!-- 模块名称 -->
<artifactId>servlet-api</artifactId>
<!-- 版本信息 -->
<version>3.1.0</version>
<!-- 依赖范围, 指定依赖范围是编译与测试时有效,运行时无效,运行时使用tomcat中的依赖,避免冲突 -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<!-- 在测试时有效 -->
<scope>test</scope>
</dependency>
</dependencies>