(尚硅谷)Maven 新版教程 - 锦囊一

2023-10-13 13:40

本文主要是介绍(尚硅谷)Maven 新版教程 - 锦囊一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 参考文献
  • 前言
  • 1、Maven 的工作机制
  • 2、Maven 核心程序解压与配置
    • 2.1 Maven 下载版本(IDEA 配置 Maven 发生错误)
    • 2.2 解压配置 Maven
  • 3、maven 的命令行环境
    • 3.1 坐标和本地仓库的对应关系
    • 3.2 maven 的常用命令
      • 3.2.1 创建 maven 工程命令
      • 3.2.2 Maven 的构建命令
      • 3.2.3 查看当前工程所依赖的 jar 包命令
    • 3.3 创建 Maven 版的 Web 工程(实验四:打包版本错误)
    • 3.4 标签的依赖范围
    • 3.5 依赖的继承
  • 4、IDEA 新建 maven 工程
    • 4.1 创建工程之后的自动导入问题
    • 4.2 maven 配置完成之后报错
    • 4.3 maven 配置一劳永逸的方法
    • 4.4 创建 Web 模块工程
      • 4.4.1 第一种方式(不使用骨架)
      • 4.4.2 第二种方式(使用骨架的方式)
        • 添加 web 模块的两种方法:
        • java 和 resources 包为灰色的原因
      • 4.4.3 war 包打包的时候报错


参考文献

  1. Maven 入门、原理与实战,尚硅谷给出的官方 maven 课件地址,我们现在只要学习第一支锦囊的东西就可以了。
  2. 尚硅谷2022版Maven教程(maven入门+高深,全网无出其右!),尚硅谷,让天下有学不完技术,对应第一支锦囊,看时频 P1-P53 即可。

前言

跟着视频按照老师的教程来操作的时候,由于 IDEA 、JDK 、Maven 版本不一致,会产生一堆意想不到的错误,本文主要是记录自己遇到的报错以及搜索到的可以解决问题的解决方案,以便今后查阅。


1、Maven 的工作机制

在这里插入图片描述
Maven 核心程序:只是负责宏观上的总体调度;
Maven 插件:具体负责干活的;

总结:

  • 我们以后创建工程都是创建 maven 工程,我们写的一些 Maven 程序都是调用 maven 插件的 jar 包来执行的;
  • 我们的工程可以打包成 jar 包主动安装到我们自己定义的 maven 仓库里,我们也可以依赖一些框架的 jar 包,这些 jar 包先从自己的本地仓库找,找不到的话去镜像网站定义的远程仓库进行下载,下载到本地仓库之后就可以进行使用了。

2、Maven 核心程序解压与配置

2.1 Maven 下载版本(IDEA 配置 Maven 发生错误)

参考文献:

  1. IDEA版本与MAVEN版本对应关系,及历史MAVEN版本下载
  2. maven 版本与 idea 版本对应关系
  3. 旧版 maven 的下载地址

这里 IDEA 版本需要和 maven 版本进行对应才可以,不然之后用 idea 配置 maven 的时候会报错。

这里点击 Help - About 之后看到我的 idea 版本为 2012.3.2

在这里插入图片描述

那么根据版本对应信息,maven 版本必须在 idea 发布时间之前的,我们选择 2021.3.2之前的,那选择 3.6.3 版本进行下载
在这里插入图片描述

下载的时候 Windows 系统选择的是 Binary Zip 文件进行下载,如果你想查看源码的话选择 source 文件进行下载。
在这里插入图片描述

2.2 解压配置 Maven

解压到非中文、没有空格的一个地方就可以了。

配置这里可以看尚硅谷的笔记,第一节 - Maven核心程序解压与配置,如果笔记看不懂可以直接看这一节的视频,老师讲的很好,P7 - P13 视频。

  1. 配置 Maven 工程的基础 JDK 版本这一步,改成你自己配置的 JDK 版本,这个配置要放在 <profiles> 标签内部;
<!-- 配置 Maven 工程的基础 JDK 版本 -->
<profile><id>jdk-17</id><activation><activeByDefault>true</activeByDefault><jdk>17</jdk></activation><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><maven.compiler.compilerVersion>17</maven.compiler.compilerVersion></properties>
</profile>
  1. 如果你是 idea 配置 maven 有问题,然后重新安装了低版本的 maven 之后,记得修改环境变量的配置,第二节 配置环境变量。

3、maven 的命令行环境

3.1 坐标和本地仓库的对应关系

  • groupId:一般是公司或组织名称+项目名称,如 com.atguigu.maven
  • artifactId:模块的名称,如 pro01 - maven - java
  • version:模块的版本号,1.0-SNAPSHOT

比如我上面用 gav 坐标唯一定义的 jar 包在本地仓库的位置为:
在这里插入图片描述

3.2 maven 的常用命令

3.2.1 创建 maven 工程命令

  1. 生成一个 maven 工程:mvn archetype:generate
    在这里插入图片描述
    出现 Build SUCCESS 就说明创建成功了。
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: D:\Projects\MavenWorkspace\space01
[INFO] Parameter: package, Value: com.atguigu.maven
[INFO] Parameter: groupId, Value: com.atguigu.maven
[INFO] Parameter: artifactId, Value: pro01-maven
[INFO] Parameter: packageName, Value: com.atguigu.maven
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: D:\Projects\MavenWorkspace\space01\pro01-maven
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  38.995 s
[INFO] Finished at: 2022-06-01T16:56:31+08:00
[INFO] ------------------------------------------------------------------------
  1. pom.xml 文件中修改自动生成的 junit 测试版本为 4.12 版本;
    在这里插入图片描述

3.2.2 Maven 的构建命令

实验三:执行 Maven 的构建命令

  1. 注意: 运行 Maven 中和构建操作相关的命令时,必须进入到 pom.xml 所在的目录;
  2. 清理操作,删除 target 目录:mvn clean
  3. 主程序编译,将 src/main/java 目录下的 java 文件编译成 class 文件:mvn compile;测试程序编译,将 src/test/java 目录下的 java 文件编译成 class 文件:mvn test-compile;编译完之后放到 target 目录下:

在这里插入图片描述
在这里插入图片描述

  1. 执行测试程序,执行完之后放在 target 目录下:mvn test

在这里插入图片描述

  1. 执行打包程序,执行完之后放到 target 目录下:mvn package

在这里插入图片描述

  1. 执行安装程序,安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库,你之前定义的坐标这个时候就是你本地仓库的文件加密名称:mvn install

在这里插入图片描述

3.2.3 查看当前工程所依赖的 jar 包命令

  1. 列表形式:mvn dependency:list
  2. 树形结构:mvn dependency:tree
  3. 列表中展示的 jar 包格式包括的信息如下:
    在这里插入图片描述

3.3 创建 Maven 版的 Web 工程(实验四:打包版本错误)

  1. 新建一个 web 工程命令:mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

在这里插入图片描述
2. 修改 pom.xml 文件中的打包方式,其实默认的就是 war 打包方式,但是要确认一下:
在这里插入图片描述
3. 找到依赖信息的网站,https://mvnrepository.com/:
在这里插入图片描述

  1. 实验四步骤 9 将 Web 工程打包为 war 包即进行 mvn package 的时候报错,原因是低版本的 war 包打包插件不能用来打包高版本的 jdk,maven 使用mvn package命令进行打包, 报错:Error injecting constructor, java.lang.ExceptionInInitializerError;

  2. 将你建好的 web 工程粘贴到 tomcat 对应的 webapps 文件夹下面,运行 tomcat 之后,成功运行,为了方便访问,将文件夹名字修改为,那么访问网址为:http://localhost:8080/demo/index.jsp
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.4 标签的依赖范围

我们在设置依赖的时候如下格式,前三个标签是坐标,最后一个要设置依赖的范围,以后我们打包的时候会有选择的打包:
在这里插入图片描述
在这里插入图片描述

依赖的传递性,只有 compile 范围的标签才能传递:
在这里插入图片描述
注意:

  • 我们每次修改了某一文件的 pom.xml 文件之后,需要重新 mvn clean install 之后,也就是要重新安装到本地仓库之后,其他依赖于这个项目的 项目才能获取到当前项目修改的 依赖信息;

3.5 依赖的继承

父工程中定义某一通用依赖:
在这里插入图片描述
在父工程中自定义属性名来配置某一依赖的版本,真正体现一处修改,处处生效。
在这里插入图片描述
在这里插入图片描述
子工程对父工程的继承:
在这里插入图片描述
在这里插入图片描述

4、IDEA 新建 maven 工程

4.1 创建工程之后的自动导入问题

  1. 我们的 File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing 设置中根本没有老师说的 Import Maven projects automatically,即自动导入 jar 包的功能;
  2. 解决方法:IDEA 2020 新版本自动导入MAVEN依赖的解决方法(快捷键自动导入);
  3. 你可以每次都点击右上角跳出来的小图标,也可以设置一个快捷键一键导包。

4.2 maven 配置完成之后报错

按如下操作修改 maven 对应路径:
在这里插入图片描述
修改完之后本地仓库的位置自动做了修改:
在这里插入图片描述
但是在我们修改 settings 配置文件的时候报错:

在这里插入图片描述
在这里插入图片描述
这里就是由于 maven 版本太高,与 idea 版本不匹配所导致的;直接回到第 2 节按照步骤重新安装对应的 maven 版本。

参考文献:

  1. 2021.3.2版本idea配置maven出现org.codehaus.plexus.component.repository.exception.ComponentLookupException
  2. IDEA版本与MAVEN版本对应关系,及历史MAVEN版本下载

4.3 maven 配置一劳永逸的方法

这里配置的这个只对其他 project 有效,对当前工程无效:

在这里插入图片描述
在这里插入图片描述

下面两步选择 JDK 和 JRE 的时候一定要和你 settings 中配置的基础 JDK 的版本对应上。

在这里插入图片描述

在这里插入图片描述

重新打开一个项目看一下,配置成功了,如果没有的话需要再来一遍应该就可以了。

4.4 创建 Web 模块工程

参考文献:

  1. IDEA中创建Maven Web项目的两种方法

4.4.1 第一种方式(不使用骨架)

参考链接:

  1. 第四节 创建Web模块工程,这是一种需要自己手动修改 webapp 的路径的方法,有点麻烦还容易出错;

  2. 接下来我们使用挪动的方法:

  3. 我们先创建一个 JAVA 模块,然后在里面添加一个 web 模块,

这里新建 module 不勾选下面的这些模板:

在这里插入图片描述

这边我们自己写模块名字,我们在父工程下面创建子工程的时候,模块的 GroupId 是自动生成的,与父工程的一致

在这里插入图片描述

修改 web 模块的打包方式:
在这里插入图片描述

在当前 module 下面新增一个 web 模块:

在这里插入图片描述
在这里插入图片描述

这个时候工程目录还不对,文件名也不对,我们右键先修改文件夹名称,这个文件夹名称是固定的,一种规定:

在这里插入图片描述
在这里插入图片描述
然后我们将它拖动到 src/main 文件夹下面:

在这里插入图片描述

同时确保这两个文件的目录是正确的,如果是拖动过去的,下面这个文件夹需要修改:

在这里插入图片描述

现在好了,我们配置 tomcat 看看能不能运行,不会配置 tomcat 的看我之前的笔记,不详细讲:
在这里插入图片描述

在这里插入图片描述
网页展示:

在这里插入图片描述

4.4.2 第二种方式(使用骨架的方式)

这里我使用这种方式创建出来的 webapp 模块还不是 web 模块,上面没有蓝色小圆圈,还得自己手动添加,或者 选择 import web.xml 的方式 进行导入。

添加 web 模块的两种方法:
  1. 方法一:

在这里插入图片描述
在这里插入图片描述

将这两个地方的路径修改正确之后应用即可:

在这里插入图片描述

  1. 方法二:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后修改对应的两处路径:

在这里插入图片描述

java 和 resources 包为灰色的原因
  1. 一种原因是 maven 版本太高,你创建 java 文件夹不能识别;
  2. 另一种原因是你之前创建过同名文件然后删除了之后,但是父模块中的 pom.xml 文件中的聚合还没有删除,又创建了新的有冲突;
  3. 还有一种情况是文件处于被忽略状态,到 File | Settings | Build, Execution, Deployment | Build Tools | Maven | Ignored Files 把文件前面的对勾去掉就可以了。

在这里插入图片描述

参考链接:

  1. IntelliJ IDEA 在main包下面创建Java子包时,Java呈灰色,下面是一种情况以及解决方式。
  2. IDEA中Maven的module是灰色的解决办法

4.4.3 war 包打包的时候报错

参考链接:

  1. idea Cannot access defaults field of Properties的解决方法

这里还是由于打包插件的版本过低,在 pom.xml 文件中定义打包插件的把呢版本即可,参考 3.3 节,好像定义过一次之后,之后自动使用高版本插件了,后来即使我没有定义,也没有报错。

这篇关于(尚硅谷)Maven 新版教程 - 锦囊一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203609

相关文章

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统