(尚硅谷)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

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

JavaScript装饰器从基础到实战教程

《JavaScript装饰器从基础到实战教程》装饰器是js中一种声明式语法特性,用于在不修改原始代码的情况下,动态扩展类、方法、属性或参数的行为,本文将从基础概念入手,逐步讲解装饰器的类型、用法、进阶... 目录一、装饰器基础概念1.1 什么是装饰器?1.2 装饰器的语法1.3 装饰器的执行时机二、装饰器的

MySQL 5.7彻底卸载与重新安装保姆级教程(附常见问题解决)

《MySQL5.7彻底卸载与重新安装保姆级教程(附常见问题解决)》:本文主要介绍MySQL5.7彻底卸载与重新安装保姆级教程的相关资料,步骤包括停止服务、卸载程序、删除文件和注册表项、清理环境... 目录一、彻底卸载旧版本mysql(核心步骤)二、MySQL 5.7重新安装与配置三、常见问题解决总结废话不多

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.