当前位置: 首页 > news >正文

三、使用 Maven:命令行环境

文章目录

  • 1. 第一节 实验一:根据坐标创建 Maven 工程
    • 1.1 Maven 核心概念:坐标
    • 1.2 实验操作
    • 1.3 Maven核心概念:POM
    • 1.4 Maven核心概念:约定的目录结构
  • 2. 实验二:在 Maven 工程中编写代码
    • 2.1 主体程序
    • 2.2 测试程序
  • 3. 执行 Maven 的构建命令
    • 3.1 要求
    • 3.2 清理操作
    • 3.3 编译操作
    • 3.4 测试操作
    • 3.5 打包操作
    • 3.6 安装操作
  • 4. 创建 Maven 版的 Web 工程
    • 4.1 说明
    • 4.2 操作
    • 4.3 生成的pom.xml
    • 4.4 生成的Web工程的目录结构
    • 4.5 创建 Servlet
    • 4.6 在 index.jsp 页面编写超链接
    • 4.7 编译
    • 4.8 配置对 servlet-api.jar 包的依赖
    • 4.9 将 Web 工程打包为 war 包
    • 4.10 将 war 包部署到 Tomcat 上运行
  • 5. 让 Web 工程 依赖 Java 工程
    • 5.1 观念
    • 5.2 操作
    • 5.3 在 Web 工程中,编写测试代码
    • 5.4 执行Maven命令
  • 6. 测试依赖的范围
    • 6.1 依赖范围
    • 6.2 测试
  • 7. 测试依赖的传递性
    • 7.1 依赖的传递性
    • 7.2 使用 compile 范围依赖 spring-core
    • 7.3 验证 test 和 provided 范围不能传递
  • 8. 测试依赖的排除
    • 8.1 概念
    • 8.2 配置方式
    • 8.3 测试
  • 9. 继承
    • 9.1 概念
    • 9.2 作用
    • 9.3 举例
    • 9.4 操作
    • 9.5 实际意义
  • 10. 聚合
    • 10.1 聚合本身的含义
    • 10.2 Maven 中的聚合
    • 10.3 好处
    • 10.4 聚合的配置
    • 10.5 依赖循环问题

1. 第一节 实验一:根据坐标创建 Maven 工程

1.1 Maven 核心概念:坐标

①数学中的坐标
在这里插入图片描述

使用 x、y、z 三个『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『
②Maven中的坐标
在这里插入图片描述

在这里插入图片描述

③坐标和仓库中 jar 包的存储路径之间的对应关系
坐标:
在这里插入图片描述

上面坐标对应的 jar 包在 Maven 本地仓库中的位置:
在这里插入图片描述

一定要学会根据坐标到本地仓库中找到对应的 jar 包。

1.2 实验操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 Maven核心概念:POM

在这里插入图片描述

1.4 Maven核心概念:约定的目录结构

在这里插入图片描述

在这里插入图片描述

2. 实验二:在 Maven 工程中编写代码

2.1 主体程序

在这里插入图片描述

主体程序指的是被测试的程序,同时也是将来在项目中真正要使用的程序。
在这里插入图片描述

2.2 测试程序

在这里插入图片描述

在这里插入图片描述

3. 执行 Maven 的构建命令

3.1 要求

运行 Maven 中和构建操作相关的命令时,必须进入到 pom.xml 所在的目录。如果没有在 pom.xml 所在的目录运行 Maven 的构建命令,那么会看到下面的错误信息:
在这里插入图片描述

在这里插入图片描述

3.2 清理操作

mvn clean
效果:删除 target 目录

3.3 编译操作

主程序编译:mvn compile
测试程序编译:mvn test-compile
主体程序编译结果存放的目录:target/classes
测试程序编译结果存放的目录:target/test-classes

3.4 测试操作

mvn test
测试的报告存放的目录:target/surefire-reports

3.5 打包操作

mvn package
打包的结果——jar 包,存放的目录:target

3.6 安装操作

mvn install

[INFO] Installing D:\maven-workspace\space201026\pro01-maven-java\target\pro01-maven-java-1.0-SNAPSHOT.jar to D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar
[INFO] Installing D:\maven-workspace\space201026\pro01-maven-java\pom.xml to D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.pom

安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的
坐标信息如下:
在这里插入图片描述

在 Maven 仓库中生成的路径如下:

D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar

另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。

4. 创建 Maven 版的 Web 工程

4.1 说明

使用 mvn archetype:generate 命令生成 Web 工程时,需要使用一个专门的 archetype。这个专门生成 Web 工程骨架的 archetype 可以参照官网看到它的用法:
在这里插入图片描述

参数 archetypeGroupId、archetypeArtifactId、archetypeVersion 用来指定现在使用的 maven-archetype-webapp 的坐标。

4.2 操作

注意:如果在上一个工程的目录下执行 mvn archetype:generate 命令,那么 Maven 会报错:不能在一个非 pom 的工程下再创建其他工程。所以不要再刚才创建的工程里再创建新的工程,请回到工作空间根目录来操作。
然后运行生成工程的命令:

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

在这里插入图片描述

4.3 生成的pom.xml

在这里插入图片描述

4.4 生成的Web工程的目录结构

在这里插入图片描述

4.5 创建 Servlet

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.6 在 index.jsp 页面编写超链接

在这里插入图片描述

4.7 编译

在这里插入图片描述

4.8 配置对 servlet-api.jar 包的依赖

对于不知道详细信息的依赖可以到 https://mvnrepository.com/ 网站查询。使用关键词搜索,然后在搜索结果列表中选择适合的使用
在这里插入图片描述

比如,我们找到的 servlet-api 的依赖信息:
在这里插入图片描述

4.9 将 Web 工程打包为 war 包

在这里插入图片描述

4.10 将 war 包部署到 Tomcat 上运行

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. 让 Web 工程 依赖 Java 工程

5.1 观念

明确一个意识:从来只有 Web 工程依赖 Java 工程,没有反过来 Java 工程依赖 Web 工程。本质上来说,Web 工程依赖的 Java 工程其实就是 Web 工程里导入的 jar 包。最终 Java 工程会变成 jar 包,放在 Web 工程的 WEB-INF/lib 目录下。

5.2 操作

在 pro02-maven-web 工程的 pom.xml 中,找到 dependencies 标签,在 dependencies 标签中做如下配置:
在这里插入图片描述

5.3 在 Web 工程中,编写测试代码

在这里插入图片描述

5.4 执行Maven命令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6. 测试依赖的范围

6.1 依赖范围

在这里插入图片描述

在这里插入图片描述

6.2 测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后运行Maven的编译命令:mvn compile
然后看到编译成功。

7. 测试依赖的传递性

7.1 依赖的传递性

在这里插入图片描述

7.2 使用 compile 范围依赖 spring-core

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.3 验证 test 和 provided 范围不能传递

在这里插入图片描述

8. 测试依赖的排除

8.1 概念

在这里插入图片描述

8.2 配置方式

在这里插入图片描述

8.3 测试

在这里插入图片描述

在这里插入图片描述

9. 继承

9.1 概念

在这里插入图片描述

9.2 作用

在这里插入图片描述

9.3 举例

在一个工程中依赖多个 Spring 的 jar 包
在这里插入图片描述

9.4 操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

9.5 实际意义

在这里插入图片描述

10. 聚合

10.1 聚合本身的含义

部分组成整体
在这里插入图片描述

动画片《战神金刚》中的经典台词:“我来组成头部!我来组成手臂!”就是聚合关系最生动的体现

10.2 Maven 中的聚合

在这里插入图片描述

10.3 好处

在这里插入图片描述

10.4 聚合的配置

在这里插入图片描述

10.5 依赖循环问题

在这里插入图片描述

相关文章:

三、使用 Maven:命令行环境

文章目录 1. 第一节 实验一:根据坐标创建 Maven 工程1.1 Maven 核心概念:坐标1.2 实验操作1.3 Maven核心概念:POM1.4 Maven核心概念:约定的目录结构 2. 实验二:在 Maven 工程中编写代码2.1 主体程序2.2 测试程序 3. 执…...

Blender导入下载好的fbx模型像的骨骼像针戳/像刺猬

为什么我下载下来的骨骼模型和我自己绑定的模型骨骼朝向完全不一样 左边是下载的模型 右边是我自己绑定的模型 左边的模型刚刚感觉都是像针一样往外戳的,像刺猬一样那种。 解决方法勾选自动骨骼坐标系...

如何高效搭建智能BI数据分析系统

作为当今信息化时代,数据资产已经成为企业最为核心倚重的,自然企业也就面临来自于对内部这些数据的处理和分析。如何在大批量的数据当中提取有用信息,帮助企业做出智慧决策,是不少企业面临的问题。作为国内知名的BI数据分析系统服…...

第 6 章 Java 并发包中锁原理剖析Part one

目录 6.1 LockSupport 工具类 6.2 独占锁 ReentrantLock 的原理 获取锁 1.void lock() 方法 2.void lockInterruptibly() 方法 3.boolean tryLock() 方法 4.boolean tryLock(long timeout, TimeUnit unit) 方法 释放锁 6.1 Lo…...

使用 Canvas 绘制一个镂空的圆形区域

如果要实现一个类似人脸识别的界面,要求使用 canvas 进行绘制,中间镂空透明区域,背景是白色的画布。 技术方案: 首先,使用 canvas 绘制一个白色画布其次,使用 context.globalCompositeOperation 合成属性进…...

【Notepad++】---设置背景为护眼色(豆沙绿)最新最详细

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Notepad】---设置背景为护眼色&#xf…...

2024 数学建模国一经验分享

2024 数学建模国一经验分享 背景:武汉某211,专业:计算机科学 心血来潮,就从学习和组队两个方面指点下后来者,帮新人避坑吧 2024年我在数学建模比赛中获得了国一(教练说论文的分数是湖北省B组第一&#xff0…...

安全见闻2

安全见闻,犹如一座庞大而深邃的知识宝库,其中涵盖了形形色色的网络安全知识与错综复杂的网络技术体系。在当今数字化时代,这些领域的重要性不言而喻,它们不仅关乎个人信息的保护与隐私安全,更是支撑着整个互联网世界以…...

Web游戏开发指南:在 Phaser.js 中读取和管理游戏手柄输入

前言 Phaser.js 是一个广受欢迎的 HTML5 游戏框架,为开发者提供了创建跨平台 2D 游戏的强大工具。在现代游戏开发中,支持游戏手柄已成为提升玩家体验的重要方面。本文将详细介绍如何在 Phaser.js 中监听和处理游戏手柄的输入,帮助开发者为他…...

代码随想录32 动态规划理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯。

1.动态规划理论基础 动态规划刷题大纲 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的…...

记录一个Flutter 3.24单元测试点击事件bug

哈喽,我是老刘 这两天发现一个Flutter 3.24版本的单元测试的一个小bug,提醒大家注意一下。 老刘自己写代码十多年了,写Flutter也6年多了,没想到前两天在一个小小的BottomNavigationBar 组件上翻了车。 给大家分享一下事件的经过。…...

使用Python将 word文档转pdf文档

第一步:我们需要导入支持包 >pip install pywin32 如果下载速度比较慢的话,可以考虑使用国内镜像源。 第二步:我们需要导入文件,这里采用 input,用户填入路径后,直接获取路径下的word文档,实现批量转换…...

基于C#+SQLite开发数据库应用的示例

SQLite数据库,小巧但功能强大;并且是基于文件型的数据库,驱动库就是一个dll文件,有些开发工具 甚至不需要带这个dll,比如用Delphi开发,用一些三方组件;数据库也是一个文件,虽然是个文…...

Vue基本语法

Options API 选项式/配置式api 需要在script中的export default一个对象对象中可以包含data、method、components等keydata是数据,数据必须是一个方法(如果是对象,会导致多组件的时候,数据互相影响,因为对象赋值后&…...

芯片发展史

芯片的发展史可分为几个重要的阶段,从早期的真空管到现代的集成电路,反映了技术进步和创新的历程: 1. 真空管时代 (1904 - 1950年代) 真空管是20世纪初的电子元件,用于放大信号和开关,广泛应用在早期的收音机、电视机…...

我的知识图谱和Neo4j数据库的使用

知识图谱概述 知识图谱的含义 RDF与RDFS RDF(Resource Description Framework,资源描述框架)和RDFS(RDF Schema,RDF模式)是构建知识图谱的基础技术之一。它们提供了一种标准的方式来表示信息,…...

ASP.NET CORE API 解决跨域问题

环境 vs2022 .net 8 创建ASP.net Core API项目 配置跨域 编写ApiController 启动项目 得到服务器运行的 地址 在Hbuiler中创建web项目,编写代码 【运行】-【运行到浏览器】-选择一个浏览器,查看结果 正常显示 问题 如果允许所有源访问,有安全风险方…...

sram测试注意讨论

常规测试首先是mbist测试,原理不用多说,自己看,主要是注意点和考虑点: 1、明确测试用的到func_clk的频率的大小,根据经验值一般大于800M的时钟需要特别考虑Timing的问题:由于pr摆放的位置原因,…...

Mybatis 支持延迟加载的详细内容

延迟加载的概念深入 延迟加载是一种在处理复杂对象关系时非常有用的策略。在企业级应用开发中,数据库中的表之间往往存在着各种关联关系,如一对多(一个用户有多个订单)、多对多(一个学生可以选多门课程,一门…...

word文档使用技巧笔记

中文和数字断开到第二行 word一串数字断开_百度知道 下划线对齐 word下划线怎么固定长度一致-百度经验...

macOS运行Windows程序的终极指南:Whisky完全攻略

macOS运行Windows程序的终极指南:Whisky完全攻略 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 想在Mac上无缝运行Windows软件和游戏,但又不想安装虚拟机或双…...

为什么说Ohook重新定义了Office激活的技术边界?

为什么说Ohook重新定义了Office激活的技术边界? 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/oh/ohook 当…...

FLUX.1-dev-Controlnet-Union深度解析:多模态控制网络的架构与实战应用

FLUX.1-dev-Controlnet-Union深度解析:多模态控制网络的架构与实战应用 【免费下载链接】FLUX.1-dev-Controlnet-Union 项目地址: https://ai.gitcode.com/hf_mirrors/InstantX/FLUX.1-dev-Controlnet-Union FLUX.1-dev-Controlnet-Union作为FLUX.1-dev生态…...

3分钟搞定B站评论分析:这个开源工具让你秒懂评论区用户身份

3分钟搞定B站评论分析:这个开源工具让你秒懂评论区用户身份 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分,支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker …...

从图灵完备到意图完备:人工智能的本体论跃迁

什么是真正的智能?是能够执行任意计算任务,还是能够在世界中“存在”,感知、欲望、思考和行动?是能够给出所有正确答案,还是能够提出一个有意义的问题?是能够优化任何给定的目标,还是能够为自己…...

5分钟极速上手:B站视频转文字工具bili2text完整指南

5分钟极速上手:B站视频转文字工具bili2text完整指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为整理B站视频内容而烦恼吗?每…...

极竞魔方XR大空间亮相孩子王南京城市亲子节

在这个周末的南京,空气中除了初夏的微热,更多的是属于家庭的欢笑声。由母婴童行业领军品牌“孩子王”倾力打造的南京城市亲子节现场人头攒动,成为了全城瞩目的焦点。在琳琅满目的展位与高频互动的游乐项目中,孩子和家长正排队解锁…...

手把手教你用W25Q32 SPI Flash:从波形图看懂擦除、写入和读取(附完整代码)

手把手教你用W25Q32 SPI Flash:从波形图看懂擦除、写入和读取(附完整代码) 在嵌入式开发中,SPI Flash存储器因其高性价比、大容量和简单接口而广受欢迎。W25Q32作为一款32Mb的SPI Flash芯片,被广泛应用于物联网设备、消…...

收藏备用!【2025 版】CMD 命令超详细大全,零基础全覆盖

在Windows操作系统中,命令提示符(CMD)是一个强大的工具,允许用户通过输入命令来执行各种操作。无论是系统管理、网络配置,还是文件管理,CMD都能提供高效的解决方案。 一、基本命令 cd:更改目录…...

CANN/asc-devkit asc_any函数

asc_any 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...