Maven
- Maven 可以自动导入、配置需要使用的 jar 包;
一、Maven 项目架构管理工具
- Maven 核心思想:约定大于配置;
- 有约束,不要去违反;
- Maven 会规定好,如何去编写 Java 代码,必须要按照规范;
二、下载和安装
- Maven 环境配置
Maven是基于Java的工具,首先要 安装 JDK;- 系统要求:
| 项目 | JDK 要求 |
|---|---|
| Maven 3.3 以上 | JDK 1.7 或以上 |
| Maven 3.2 | JDK 1.6 或以上 |
| Maven 3.0/3.1 | JDK 1.5 或以上 |
- 查看
java版本:java -version
D:\>java -version
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-39)
OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)
- Maven 下载
-
Maven 3.84:官网地址
-
下载后解压:根据自己情况配置
- 设置 Maven 环境变量:Windows
-
环境变量->系统变量中,添加如下配置:-
M2_HOME:maven 目录下的 bin 目录; -
MAVEN_HOME:maven 的目录; -
在系统的 Path 中配置
%MAVEN_HOME%\bin;
-
-
查看配置情况:
mvn -v查看版本号
- Linux 安装及配置:
- 下载解压:
[root@VM-0-6-centos ~]# wget https://mirror-hk.koddos.net/apache/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gz
......
[root@VM-0-6-centos ~]# tar -xvf apache-maven-3.8.2-bin.tar.gz
[root@VM-0-6-centos ~]# sudo mv -f apache-maven-3.8.2-bin.tar.gz /usr/local/
- 编辑
/etc/profile文件sudo vim /etc/profile,在文件末尾添加如下代码:
export MAVEN_HOME=/usr/local/apache-maven-3.8.2
export PATH=${PATH}:${MAVEN_HOME}/bin
- 保存文件,并运行如下命令使环境变量生效:
[root@VM-0-6-centos ~]# source /etc/profile
- 在控制台输入
mvn -v命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功。
[root@VM-0-6-centos ~]# mvn -v
三、阿里云镜像
-
maven目录 ->conf->settings.xml更换阿里云镜像,加快依赖下载; -
在
mirrors标签中替换为阿里云镜像:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
四、本地仓库
maven目录 ->conf->settings.xml;- 创建本地仓库:
localRepository标签中,自定义目录位置,/不能写反;
<!--自定义目录位置,/ 不能写反-->
<localRepository>D:/Environment/apache-maven-3.8.4/m2/repository</localRepository>
五、在 IDEA 中使用 Maven
- 创建 MavenWeb 项目:
-
点击完成后,会自动导入包,等待项目初始化完毕;
-
查看 maven 本地仓库:
-
IDEA 中的 Maven 设置
- 注意:IDEA 项目创建成功后,要看下 Maven 的配置;
-
配置新建项目设置:
文件>新项目设置>新项目的设置 -
设置新建项目的默认 Maven 设置:
-
设置运行配置模板:
六、创建普通的 Maven 项目
-
不勾选从模板创建
-
生成完整目录
-
初始的 maven 配置文件:
<?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>org.example</groupId>
<artifactId>javaWeb-01-maven02</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</project>
-
Web 应用下的文件目录:
七、标记文件夹功能
-
将模板创建的 Web 项目(目录补全),并标记为相应的文件夹
-
方式 1:main 目录右键,会提示缺少的目录,点击直接创建即可;
-
方式 2:创建普通目录,右键标记为相应的文件目录;
-
方式 3:在项目结构中标记
八、在 IDEA 中配置 Tomcat
-
Tomcat 服务配置:
-
点击
+添加 Tomcat: -
在
其它中,选择Tomcat本地: -
具体配置:
-
Tomcat 主程序配置:
-
解决警告问题:
-
必须配置:访问一个网站时,必须指定文件夹名;
-
虚拟路径映射:可写,可不写
- 不写:默认访问路径
localhost:8080; - 写:
/路径名,访问路径localhost:8080/路径名;
- 不写:默认访问路径
-
启动 Tomcat:点击绿色箭头
-
显示页面内空,就是默认的 index.jsp 的内容;
九、pom 文件
-
pom.xml是 Maven 的核心配置文件; -
Maven 模板创建 Web 项目,生成的
pom.xml文件;
<?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>com.study</groupId>
<artifactId>javaWeb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--项目的打包方式(jar:java应用 war:JavaWeb应用)-->
<packaging>war</packaging>
<!--配置-->
<properties>
<!--项目默认构建编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--JDK 编码版本-->
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<!--项目依赖-->
<dependencies>
<!--具体依赖的jar包配置文件-->
<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 由于约定大于配置,可能遇到自己写的配置文件,无法被导出或者不生效的问题,解决方案:
<!--在build中配置resources,防止资源导出失败的问题-->
<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 中 jar 包的关联图
十一、可能遇到的问题
- IDEA 快速构建 Maven 工程报错:
-
创建项目时,IDEA 会使用插件创建,每次创建都会去中央仓库下载,速度慢,会报错:
No archetype found in remote catalog. Defaulting to internal catalog(远程目录中找不到原型,默认为内部目录);
-
解决方式:更改为,从本地仓库中的插件进行创建项目;
- 在
新项目的设置里配置:- VM选项:
-DarchetypeCatalog=internal
- VM选项:
- 在
- IDEA 中每次都要重复配置 Maven
- 在
新项目设置或在全局默认配置里去设置 Maven 的配置;
- Maven 默认 web 项目中的
web.xml版本问题
-
创建 Web 项目时,IDEA 默认生成的
web.xml文件: -
替换为与 Tcomcat 一致的内容:
<!--Tomcat 10-->
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
</web-app>
- IDEA Tomcat 控制台乱码
-
Tomcat 控制台乱码:在 Tomcat 配置中配置
-Dfile.encoding=UTF-8 -
Tomcat Catalina 日志乱码:
-
解决:修改 Tomcat 配置文件
-
post 乱码:在方法第一行加
req.setCharacterEncoding("utf-8");