一、环境配置
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>
