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

快速掌握C#语言基础知识点(17.委托)

关注我的动态 namespace _17.委托 {public delegate void doMyAction(); //委托,无参,无返回值public delegate int doPlus(int a, int b);//委托,有参,有返回值internal class Program{//委托成员变量public static doMyAction a…...

掌握ModTheSpire:从入门到精通的开源模组加载工具实战指南

掌握ModTheSpire:从入门到精通的开源模组加载工具实战指南 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 认知铺垫:走进模组加载的技术世界 当你第一次尝试为…...

终极WindowResizer完整指南:让窗口调整随心所欲

终极WindowResizer完整指南:让窗口调整随心所欲 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否遇到过无法调整大小的应用窗口?WindowResizer是一款强…...

天问Block环境下ASRPRO语音芯片实战:语音交互、GPIO控制与PWM调光开发指南

1. 天问Block与ASRPRO芯片开发入门 第一次接触天问Block和ASRPRO语音芯片时,我被它们的组合惊艳到了。这个开发环境就像乐高积木一样,通过拖拽代码块就能完成复杂的功能开发,特别适合像我这样的硬件爱好者。ASRPRO作为一款专为语音交互设计的…...

如何轻松备份微信聊天记录:WeChatMsg完整指南让数据掌控权回归你手

如何轻松备份微信聊天记录:WeChatMsg完整指南让数据掌控权回归你手 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...

数据库课程设计融合AI:使用PyTorch构建智能图书馆推荐系统

数据库课程设计融合AI:使用PyTorch构建智能图书馆推荐系统 1. 项目背景与价值 高校图书馆管理系统是数据库课程的经典设计选题,但传统方案往往只关注基本的增删改查功能。将AI推荐系统融入课程设计,不仅能让学生掌握数据库设计核心技能&…...

用Python+Pandas搞定校园单车数据清洗:从‘200+’到精准分布表的保姆级教程

用PythonPandas搞定校园单车数据清洗:从‘200’到精准分布表的保姆级教程 校园单车数据清洗是数据分析实战中的经典场景。想象一下这样的情境:你拿到一份包含15个停车点、7个时间段的校园单车统计表,却发现数据里混杂着"200"这样的…...

SDXL 1.0工坊应用场景:短视频团队低成本制作分镜概念图

SDXL 1.0工坊应用场景:短视频团队低成本制作分镜概念图 1. 引言:短视频创作的痛点与新解法 对于短视频团队来说,创意是灵魂,但将创意快速、低成本地可视化,却常常是个难题。尤其是在前期策划阶段,制作分镜…...

ai辅助开发c语言:如何利用快马智能编程助手精通数据结构与算法

今天想和大家分享一个特别实用的学习经验——如何用AI辅助工具高效学习C语言的数据结构与算法。作为一个刚接触数据结构的小白,我在实现单链表时遇到了不少坑,但通过InsCode(快马)平台的AI编程助手,整个过程变得轻松多了。 链表创建与节点插入…...

WinDiskWriter:突破限制的macOS Windows启动盘制作工具

WinDiskWriter:突破限制的macOS Windows启动盘制作工具 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 👾 UEFI & Legacy …...