一、环境配置
1.1 在什么地方配置
我的电脑 - 属性 - 系统设置 - 环境变量
1.1.1 系统变量
M2_HOME:你的maven的bin文件夹的路径
MAVEN_HOME:你的maven的文件路径
1.1.2 用户变量
- Path:新增一条
- 你的maven的bin文件夹的路径
- 可用:%系统变量名%方式,如:%MAVEN_HOME%\bin
- 你的maven的bin文件夹的路径
二、setting文件配置
2.1 在什么地方配置
你的maven路径\conf\settings.xml
2.2 setting文件部分标签介绍
2.2.1 settings 标签
**settings.xml 的头文件**
一般不做修改
2.2.2 localRepository 标签
**本地仓库路径**
- 可在maven文件夹内新增文件夹“maven-repo”,作为本地仓库
- 如我的本地仓库为:
xml <localRepository>F:\learn\JavaWeb\apache-maven-3.6.3\maven-repo</localRepository>
- 如我的本地仓库为:
2.2.3 mirrors 标签
**maven仓库镜像**
- 阿里云仓库镜像
xml <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
三、用IDEA创建一个maven项目
- 选择maven模板
- 取名、定义包名
- 修改maven目录
- 需勾上Override才能修改目录
- 等待下载资源并导入资源
四、IDEA中的maven部分设置介绍
4.1 修改默认maven路径
IDEA项目创建成功后,其maven的路径可能默认为IDEA自带的maven路径,需改为本地maven路径
4.2 自动导入源码(可选)
注:
- 勾上会影响性能
- 该功能详细内容可查看:在Intellij IDEA 中自动加载Maven管理的依赖包的源码 —一唐 云栖社区
4.3 maven的本地仓库
4.4 其他设置选项
- lgnored Files:忽略指定maven模块
- Runner:maven运行环境配置
具体可查看 IntelliJ IDEA 的说明文档
五、pom文件
pom.xml 是 Maven 的核心配置文件
5.1 内容
Lifecycle
maven的命令行操作Plugins
插件Dependencies
项目依赖
5.2 代码内容介绍
<?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>
<groupId>com.yafnds</groupId>
<artifactId>JavaWeb-01-home-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--
packaging:项目的打包方式
jar:java应用
war:JavaWeb应用
-->
<packaging>war</packaging>
<name>JavaWeb-01-home-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.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!-- 项目依赖 -->
<!-- 即右边栏的Dependencies -->
<dependencies>
<!-- 具体依赖的jar包文件 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 项目构建用的东西 -->
<!-- 即右边栏的Plugins -->
<build>
<finalName>JavaWeb-01-home-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>
六、注意点
6.1 BUG:Tomcat运行后class文件不编译
之前把idea的版本做了一次升级,结果发现自己项目启动Tomcat后报了一个错误,实例化Servlet类[com.yafnds.servlet.HelloServlet]异常,具体错误格式可以查看这个文章:
【Java】tomcat 500错误解决系列一:实例化Servlet错误
主要内容为:
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 实例化Servlet类[package.SessionDemo_01_getSession]异常
描述 服务器遇到一个意外的情况,阻止它完成请求。
该错误的主要原因是:Tomcat服务器在target文件夹下找不到需要的class文件
但是,我在试了网上的很多方法后发现,我这里找不到class文件的原因是Tomcat运行时根本没有编译class文件,如图:(编译后的target)
出错原因:父模块中出现了子模块的内容。
(出错时没有截图,后来试了好几次,发现没法复现bug,所以就没有截图了。如有需要,可以查看这篇文章(解决:多模块项目:复制已有模块进行结构修改时报错:Module “xxx” must not contain source root “...\xxx\src\main\java”. ),问题较为类似)
解决办法:打开该项目的 Project Structure 把父模块中不属于自己的特殊目录统统删掉,点右侧的X即可
**
6.2 BUG:防止资源导出失败
6.2.1 问题描述
有时候会出现在 src-main-java 或 resources 文件夹中的 properties 和 xml 文件无法在编译时导出的问题**
6.2.2 解决办法
在 pom 文件中的
<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>