Maven 安装和配置

714 阅读4分钟

Maven

  • Maven 可以自动导入、配置需要使用的 jar 包;

一、Maven 项目架构管理工具

  • Maven 核心思想:约定大于配置
  • 有约束,不要去违反;
  • Maven 会规定好,如何去编写 Java 代码,必须要按照规范;

二、下载和安装

  1. Maven 环境配置
  • Maven 是基于 Java 的工具,首先要 安装 JDK
  • 系统要求:
项目JDK 要求
Maven 3.3 以上JDK 1.7 或以上
Maven 3.2JDK 1.6 或以上
Maven 3.0/3.1JDK 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)
  1. Maven 下载
  • Maven 3.84:官网地址

    image-20220218195753802

  • 下载后解压:根据自己情况配置

    image-20220218200232164

  1. 设置 Maven 环境变量:Windows
  • 环境变量 -> 系统变量 中,添加如下配置:

    • M2_HOME:maven 目录下的 bin 目录;

      image-20220218202357305

    • MAVEN_HOME:maven 的目录;

      image-20220218202203631

    • 在系统的 Path 中配置 %MAVEN_HOME%\bin

      image-20220218204151250

  • 查看配置情况:mvn -v 查看版本号

    image-20220218204524863

  1. Linux 安装及配置:
  1. 下载解压:
[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/
  1. 编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:
export MAVEN_HOME=/usr/local/apache-maven-3.8.2
export PATH=${PATH}:${MAVEN_HOME}/bin
  1. 保存文件,并运行如下命令使环境变量生效:
[root@VM-0-6-centos ~]# source /etc/profile
  1. 在控制台输入 mvn -v 命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功。
[root@VM-0-6-centos ~]# mvn -v

三、阿里云镜像

  • maven 目录 -> conf -> settings.xml 更换阿里云镜像,加快依赖下载;

    image-20220218205832105

  • 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 项目:

image-20220218214228990

image-20220218225647351

image-20220218220014830

image-20220218220549861

  • 点击完成后,会自动导入包,等待项目初始化完毕;

    image-20220218221127569

  • 查看 maven 本地仓库:

    image-20220218221630723

  • IDEA 中的 Maven 设置

    • 注意:IDEA 项目创建成功后,要看下 Maven 的配置;

    image-20220218222320376

    image-20220218223021225

  • 配置新建项目设置:文件 > 新项目设置 > 新项目的设置

    image-20220218231602210

  • 设置新建项目的默认 Maven 设置:

    image-20220218224245296

  • 设置运行配置模板:

    image-20220218231432163

六、创建普通的 Maven 项目

  • 不勾选从模板创建

    image-20220218231915465

  • 生成完整目录

    image-20220218232244051

  • 初始的 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 应用下的文件目录:

    image-20220218232827922

七、标记文件夹功能

  • 将模板创建的 Web 项目(目录补全),并标记为相应的文件夹

  • 方式 1:main 目录右键,会提示缺少的目录,点击直接创建即可;

    image-20220218233616184

  • 方式 2:创建普通目录,右键标记为相应的文件目录;

    image-20220218233927773

  • 方式 3:在项目结构中标记

    image-20220218234702794

八、在 IDEA 中配置 Tomcat

  • Tomcat 服务配置:

    image-20220219110632596

  • 点击 + 添加 Tomcat:

    image-20220219110809822

  • 其它 中,选择 Tomcat 本地:

    image-20220219111037640

  • 具体配置:

    image-20220219112750280

  • Tomcat 主程序配置:

    image-20220219111720282

  • 解决警告问题:

  • 必须配置:访问一个网站时,必须指定文件夹名

image-20220219113902343

image-20220219113710572

  • 虚拟路径映射:可写,可不写

    • 不写:默认访问路径 localhost:8080
    • 写:/路径名,访问路径 localhost:8080/路径名

    image-20220219115213240

  • 启动 Tomcat:点击绿色箭头

    image-20220219115831466

  • 显示页面内空,就是默认的 index.jsp 的内容;

    image-20220219120231874

    image-20220219115500462

九、pom 文件

  • pom.xml 是 Maven 的核心配置文件;

    image-20220219123113748

  • 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 包的关联图

    image-20220219131728747

十一、可能遇到的问题

  1. IDEA 快速构建 Maven 工程报错:
  • 创建项目时,IDEA 会使用插件创建,每次创建都会去中央仓库下载,速度慢,会报错:

    • No archetype found in remote catalog. Defaulting to internal catalog(远程目录中找不到原型,默认为内部目录);

    image-20220219142249202

  • 解决方式:更改为,从本地仓库中的插件进行创建项目;

    • 新项目的设置 里配置:
      • VM选项:-DarchetypeCatalog=internal

    image-20220219141916981

  1. IDEA 中每次都要重复配置 Maven
  • 新项目设置 或在全局默认配置里去设置 Maven 的配置;
  1. Maven 默认 web 项目中的 web.xml 版本问题
  • 创建 Web 项目时,IDEA 默认生成的 web.xml 文件:

    image-20220219162854520

  • 替换为与 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>
  1. IDEA Tomcat 控制台乱码
  • Tomcat 控制台乱码:在 Tomcat 配置中配置 -Dfile.encoding=UTF-8

    image-20220220170503589

  • Tomcat Catalina 日志乱码:

    image-20220220172119083

  • 解决:修改 Tomcat 配置文件

    image-20220220172439914

  • post 乱码:在方法第一行加 req.setCharacterEncoding("utf-8");

十二、Maven 仓库