【maven】什么是坐标(依赖)继承与模块、web项目启动访问

目录

2. Maven 基础

2.1 坐标

2.1.0 什么是坐标(依赖)

2.1.1 获得坐标

2.1.2 使用坐标

2.1.3 依赖范围

2.1.4 依赖传递

2.1.5 依赖冲突&调节原则

2.1.6 依赖排除

2.1.7 使用第三方jar包

2.2 继承与模块

2.2.1 概述

2.2.2 分析

2.2.3 实际操作

2.3 web项目启动&访问

2.3.1 打包

2.3.2 创建web项目

2.3.3 启动1:配置tomcat方式

2.3.4 启动2:tomcat插件方式

2.4 jar项目转war项目

2.4.1 需求

2.4.2 步骤

2.4.3 实现

2. Maven 基础

2.1 坐标

2.1.0 什么是坐标(依赖)

  • 坐标:在maven中每一个项目都一个唯一标识,这个标识称为坐标,也称为依赖 dependency 。

  • 坐标组成:组、标识、版本

2.1.1 获得坐标

  • 方式1:通过idea搜索本地仓库

        <dependencies><dependency><groupId>com.czxy</groupId><artifactId>itcast-tools</artifactId><version>1.5.7</version></dependency></dependencies>

  • 方式2:通过官方网站搜索,并让maven自动下载

    https://mvnrepository.com/

  • 如果下载失败?

    • 先执行 cleanLastUpdated.bat,删除*.lastUpdated文件

    • 重新下载,idea pom.xml文件 剪切在粘贴

2.1.2 使用坐标

  • 通过坐标完成的使用

    • 在maven项目中,通过坐标可以导入对应的jar包。

    • 可以在本地仓库中,通过坐标获得jar包具体的位置。

  • 使用坐标

    • 情况1:直接使用

          <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency></dependencies>

    • 情况2:先锁定版本,再使用

          <!-- 锁定版本   --><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency></dependencies></dependencyManagement>
      ​<!--使用--><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies>
      ​
    • 情况3:先定义版本,再锁定版本,最后使用

          <!-- 版本号   --><properties><junit.version>4.9</junit.version></properties>
      ​<!-- 锁定版本   --><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency></dependencies></dependencyManagement>
      ​<!--使用--><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies>

2.1.3 依赖范围

  • 依赖范围:坐标/依赖/jar包,在maven项目中,使用的范围。

    • 此范围包括3种时态:编译时、测试时、运行时。

  • 依赖范围种类:

    • compile ,默认值,在3个时态(编译时、测试时、运行时)中都可以使用。

    • test ,测试,仅在测试时有用,其他时没有此jar。例如:Junit

    • provided,仅在编译时测试时有用。例如:servlet、jsp相关(必须操作的。)

    • runtime,仅在测试时运行时有用。例如:jdbc驱动

    • system,maven仓库之外的jar包。(不建议)

      • 如果有仓库之外的jar包,建议先安装到本地仓库中。

      mvn install:install-file -DgroupId=com.czxy -DartifactId=itcasttools -Dversion=1.5.8 -Dpackaging=jar -Dfile=E:\develop\jars\itcast-tools-1.5.8.jar
    <!--默认值,3个时态都有效--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version><scope>compile</scope></dependency>
    ​<!--测试时,有效--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency>
    ​<!-- 编译时、测试时,2个时态有效   --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency>
    ​<!-- 测试时、运行时,2个时态有效   --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.32</version><scope>runtime</scope></dependency>

2.1.4 依赖传递

  • Maven项目中的依赖关系:直接依赖、间接依赖

    • 直接依赖:A依赖B

    • 间接依赖:A依赖B,B依赖C,A间接依赖C,间接依赖,也称之为传递性依赖。

  • 前提:依赖范围必须是compile

2.1.5 依赖冲突&调节原则

  • 问题:如果两个jar,同时依赖与另外一个jar的不同版本,就可能导致jar冲突问题。这就是传递依赖的Jar版本冲突问题。

  • 依赖冲突的调节原则:

    • 原则1:路径最短优先原则

      A  --> B  -->  C 1.1
      A  --> C 1.0
      采纳:C 1.0
    • 原则2:路径长度相同

      • 同一个pom.xml文件,后面声明的会覆盖前面的依赖。(不建议使用)

            <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency></dependencies>

      • 不同pom.xml文件,先声明的依赖,会覆盖后面生命的依赖。

                <dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.10.RELEASE</version></dependency>
        ​<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.12.RELEASE</version></dependency>

2.1.6 依赖排除

  • 如果依赖传递后的版本不是实际需要的版本,需要单独引入,通常将传递的依赖进行依赖排除

        <!-- druid-spring-boot-starter 依赖传递 druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version><scope>compile</scope><!--  依赖排除 --><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>druid</artifactId></exclusion></exclusions></dependency><!-- 手动移入druid,采用【最短路径原则】--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>

2.1.7 使用第三方jar包

  • maven中央仓库中没有jar包,需要先安装,再使用。

  • 安装

    mvn install:install-file -DgroupId=com.czxy -DartifactId=itcast-tools -Dversion=1.5.9 -Dpackaging=jar -Dfile=E:\01_授课资源\02_JavaWeb\01_资料\01_jar\01_xml\itcast-tools-1.5.9.jar

2.2 继承与模块

2.2.1 概述

  • 在项目开发中,一个项目比较大,通常将项目进行拆分,方便项目维护、升级等操作。

  • 拆分方式:

    • 方式1:按照软件分层进行拆分。

      • 例如:common、domain、dao、service、web

    • 方式2:按照模块进行拆分。

      • 例如:common、domain、user、order、... 等

  • maven通过继承与模块对拆分进行支持

    • 创建父项目

    • 为父项目,创建多个子项目。

    • 每一个子项目,就是一个模块

    • 父项目和子项目,通过继承体现父子关系。

2.2.2 分析

  • 创建父项目:day17_maven_parent

  • 创建子项目:

    • day17_common

    • day17_domain

    • day17_dao

    • day17_service

    • day17_web

  • 总结:

    • 父项目的配置:

    • 子项目的配置:

2.2.3 实际操作

  • 创建父项目:day17_maven_parent

  • 创建子项目:

    • day17_common

    • day17_domain

    • day17_dao

    • day17_service

    • day17_web

总结:

  • 项目结构:

  • 父项目的配置:

  • 子项目的配置:

    • 通用配置,引用其他依赖(web --> service --> dao --> domain --> common)

          <dependencies><dependency><groupId>com.czxy</groupId><artifactId>day17_service</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>

    • 除web项目外,其他项目:

    • web项目:

      • 方式1:标准web开发,需要使用 jsp 等资源。需要将项目打包成war包。

      • 方式2:spring boot + RestFul风格,打包方式仍是jar包。

2.3 web项目启动&访问

2.3.1 打包

  • 打包之后

  • 如果我们将jar项目修改成war项目,没有其他操作时,需要在pom.xml文件中添加

        <properties><!--声明不需要web.xml文件--><failOnMissingWebXml>false</failOnMissingWebXml></properties>

2.3.2 创建web项目

  • 创建web项目

  • 设置项目坐标

2.3.3 启动1:配置tomcat方式

  • 创建web项目工作目录 webapp,并创建首页 index.html

  • 配置tomcat

  • 部署web项目

  • 启动

  • 访问

    http://localhost:8080/day17_web_war/

2.3.4 启动2:tomcat插件方式

  • 创建web项目工作目录 webapp,并创建首页 index.html (已有)

  • 如果没有配置 WEB-INF/web.xml 文件,启动有异常,可以禁用

        <properties><!--声明不需要web.xml文件--><failOnMissingWebXml>false</failOnMissingWebXml></properties>

  • 给web项目 pom.xml文件配置tomcat插件

        <build><plugins><!-- tomcat7插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>8080</port><server>tomcat7</server></configuration></plugin></plugins></build>

  • 运行对应命令 tomcat7:run

启动问题:Could not find artifact

  • 错误的提示信息

  • 解决方案:将父项目安装到maven私有仓库中

  • 存在问题:代码更新不及时,需要手动频繁的安装

2.4 jar项目转war项目

2.4.1 需求

  • 默认maven创建的是jar项目,特点是该项目基础目录结构完整。

  • 如果进行war开发,是否可以将jar项目转换成war项目

2.4.2 步骤

  • 步骤1:创建maven项目

  • 步骤2:创建项目 maven_java

  • 步骤3:创建webapp/WEB-INF目录,并拷贝web.xml文件

  • 步骤4:添加 WEB模块 支持 File/Project Structure/Modules

  • 步骤5:创建成功后,修改配置项

  • 步骤6:缺失artifact,点击Fix进行修复。

  • 步骤7:配置pom.xml

2.4.3 实现

  • 步骤1:创建maven项目

  • 步骤2:创建项目 maven_java

  • 步骤3:创建webapp/WEB-INF目录,并拷贝web.xml文件

    • 注意:maven_java/web/WEB-INF/web.xml 由步骤4自动创建

  • 步骤4:添加 WEB模块 支持 File/Project Structure/Modules

  • 步骤5:创建成功后,修改配置项

  • 步骤6:缺失artifact,点击Fix进行修复。

  • 步骤7:配置pom.xml

        <packaging>war</packaging>
    ​<build><plugins><!-- tomcat7插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>8080</port><server>tomcat7</server></configuration></plugin></plugins></build>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统论文导读(八):Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个

Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个关键性规范的零星任务的可调度性分析 目录 一、论文核心思想 二、基本定义 2.1 关键性指标 2.2 任务及相关参数定义 2.3 几个基础定义 三、可调度性分析 3.1 调度算法分…

【LeetCode】2506、统计相似字符串对的数目

【LeetCode】2506、统计相似字符串对的数目 文章目录 一、哈希表位运算1.1 哈希表位运算 二、多语言解法 一、哈希表位运算 1.1 哈希表位运算 每个字符串, 可用一个 int 表示. (每个字符 是 int 的一个位) 哈希表记录各 字符组合 出现的次数 步骤: 遇到一个字符串, 得到 ma…

uniapp使用ucharts组件

1.ucharts准备 有两种使用方式&#xff1a;一种是在uni的插件市场下载&#xff08;组件化开发&#xff09;。一种是手动引入ucharts包。官方都封装好组件了&#xff0c;我们不用岂不是浪费。 直接去dcloud插件市场&#xff08;DCloud 插件市场&#xff09;找&#xff0c;第一…

YOLOv11模型改进-模块-引入多尺度大核注意力Multi-scale Large Kernel Attention

MLKA 的提出源于图像超分辨率任务的挑战性&#xff0c;该任务需重建低质量图像缺失的高频信息&#xff0c;但因 LR 与 HR 图像对应关系复杂&#xff0c;寻找像素相关性困难。此前模型扩展容量的方法增加了训练负担和数据收集成本&#xff0c;而采用的注意力机制无法同时获取局部…

《战神:诸神黄昏》游戏运行时提示找不到emp.dll怎么办?emp.dll丢失如何修复?

《战神&#xff1a;诸神黄昏》游戏运行时提示找不到emp.dll怎么办&#xff1f;emp.dll丢失的修复方法 在畅游《战神&#xff1a;诸神黄昏》这款史诗级游戏的过程中&#xff0c;如果突然遭遇“找不到emp.dll”的错误提示&#xff0c;无疑会打断你的冒险之旅。作为一名深耕软件开…

RabbitMQ基础篇之快速入门

文章目录 一、目标需求二、RabbitMQ 控制台操作步骤1.创建队列2.交换机概述3.向交换机发送消息4.结果分析5.消息丢失原因 三、绑定交换机与队列四、测试消息发送五、消息查看六、结论 一、目标需求 新建队列&#xff1a;创建 hello.queue1 和 hello.queue2 两个队列。消息发送…

非数学专业小白第一次学习Mathematica心得和体会

文章目录 1.软件界面说明2.我为什么要学习Mathematica软件3.如何进行学习4.一些具体使用4.1正余弦函数4.2一个图里面两个函数4.3 3D图形的绘制4.4密度图4.5三维向量图4.6坐标轴说明4.7图像说明4.8绘图的图例4.9指定范围4.10指定绘图样式4.11极限方程求和4.12基本图4.13邻接矩阵…

C#实现图像骨架化(ZhangSuen细化算法)

原始图像: 骨架化后图像: 需要安装一个NuGet包:System.Drawing.Common 代码如下: using System.Drawing; using System.Drawing.Imaging;public class Image {public int Width { get; }public int Height { get; }private bool[,] pixels;// 构造函数,初始化图像的宽度…

【论文阅读笔记】IC-Light

SCALING IN-THE-WILD TRAINING FOR DIFFUSION-BASED ILLUMINATION HARMONIZATION AND EDITING BY IMPOSING CONSISTENT LIGHT TRANSPORT 通过施加一致的光线传输来扩展基于扩散模型的真实场景光照协调与编辑训练 前言摘要引言相关工作基于学习的基于扩散模型的外观和光照操纵光…

论文阅读 - 《Large Language Models Are Zero-Shot Time Series Forecasters》

Abstract 通过将时间序列编码为数字组成的字符串&#xff0c;我们可以将时间序列预测当做文本中下一个 token预测的框架。通过开发这种方法&#xff0c;我们发现像GPT-3和LLaMA-2这样的大语言模型在下游任务上可以有零样本时间序列外推能力上持平或者超过专门设计的时间序列训…

《机器学习》——线性回归模型

文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…

redis cluster集群

华子目录 什么是redis集群redis cluster的体系架构什么是数据sharding&#xff1f;什么是hash tag集群中删除或新增节点&#xff0c;数据如何迁移&#xff1f;redis集群如何使用gossip通信?定义meet信息ping消息pong消息fail消息&#xff08;不是用gossip协议实现的&#xff0…

Excel批量设置行高,Excel表格设置自动换行后打印显示不全,Excel表格设置最合适的行高后打印显示不全,完美解决方案!!!

文章目录 说个问题&#xff08;很严重&#xff01;&#xff01;&#xff01;&#xff09;写个方案会Python看这里Python环境搭建不存在多行合并存在多行合并 不会Python看这里 说个问题&#xff08;很严重&#xff01;&#xff01;&#xff01;&#xff09; 平时处理Excel表格…

安全合规遇 AI 强援:深度驱动行业发展新引擎 | 倍孜网络CEO聂子尧出席ICT深度观察报告会!

12月24日&#xff0c;2025中国信通院深度观察报告会科技伦理与合规发展分论坛在北京举办。本次分论坛主题为“伦理先行&#xff0c;合规致远”&#xff0c;聚焦互联网广告合规治理、移动终端应用生态治理、短视频平台责任限度等前沿话题进行分享与探讨。工业和信息化部领导&…

教育行业 UI 设计基础篇:简洁直观的风格打造

在当今数字化时代&#xff0c;教育行业的线上平台如雨后春笋般涌现&#xff0c;而 UI 设计作为用户与教育产品交互的重要桥梁&#xff0c;其重要性不言而喻。对于教育行业而言&#xff0c;简洁直观的 UI 风格能够极大地提升用户体验&#xff0c;帮助学习者更高效地获取知识。 …

KaiOS 4.0 | DataCall and setupData implemention

相关文档 1、KaiOS 3.1 系统介绍 KaiOS 系统框架和应用结构(APP界面逻辑)文章浏览阅读842次,点赞17次,收藏5次。对于Java开发者而言,理解JS的逻辑调用是有点困难的。而KaiOS webapp开发又不同于现代的web开发,更像chrome浏览器内嵌模式。在这里梳理一下kaios平台web应用…

【星海随笔】删除ceph

cephadm shell ceph osd set noout ceph osd set norecover ceph osd set norebalance ceph osd set nobackfill ceph osd set nodown ceph osd set pause参考文献&#xff1a; https://blog.csdn.net/lyf0327/article/details/90294011 systemctl stop ceph-osd.targetyum re…

MySQL敏感数据进行加密的几种方法

使用MySQL内置的加密函数 AES_ENCRYPT和AES_DECRYPT函数 方法介绍&#xff1a; AES&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法。在MySQL中&#xff0c;可以使用AES_ENCRYPT函数对数据进行加密&#xff0c;使用AES_DECRYPT函数进行解密。这种加密…

「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现

本篇教程将带你实现一个简易购物车功能。通过使用接口定义商品结构&#xff0c;我们将创建一个动态购物车&#xff0c;支持商品的添加、移除以及实时总价计算。 关键词 UI互动应用接口定义购物车功能动态计算商品管理列表操作 一、功能说明 简易购物车功能包含以下交互&#…

快速下载pytorch_geometric

注意&#xff1a;千万不要一上去就使用pip去安装&#xff01;&#xff01;&#xff01; 1.找到GitHub手动下载所需依赖: https://github.com/pyg-team/pytorch_geometric 进入网址后点击此处&#xff1a; 2.点击here进去后寻找自己的torch版本&#xff08;我的是torch2.1.2的…