当前位置: 首页 > 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下划线怎么固定长度一致-百度经验...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面&#xff0c;我们会实现这个普通的工厂方法&#xff0c;并且对比这个普通工厂方法和我们直接创建对象的差别在哪里&#xff0c;为什么需要一个工厂&#xff1a; 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类&#xff1a; 两个发…...

机器学习复习3--模型评估

误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异称为&#xff1a;误差&#xff08;error&#xff09;。 误差定义&#xff1a; ①在训练集上的误差称为训练误差&#xff08;training error&#xff09;或经验误差&#xff08;empirical error&#x…...