首页 > 编程语言 >JavaWeb学习笔记——第十五天

JavaWeb学习笔记——第十五天

时间:2024-04-05 13:44:19浏览次数:19  
标签:依赖 聚合 JavaWeb 工程 私服 笔记 pom 模块 第十五天

Maven高级

分模块设计与开发

  • 分模块设计就是将项目按照功能拆分成若干个子模块。
  • 优点:方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。
  • 分模块设计需要先针对模块功能进行设计,再进行编码实现。不会先将工程开发完毕,然后进行拆分。

继承与聚合

继承

  • 继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。
  • 作用:简化依赖配置、统一管理依赖。
  • 实现:<parent> … </parent>

继承实现步骤

  1. 创建父工程Maven模块,设置打包方式pom(默认jar):在pom.xml中加上<packaging>pom</packaging>
打包方式 说明
jar 普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
war 普通web程序打包,需要部署在外部的tomcat服务器中运行
pom 父工程或聚合工程,该模块不写代码,仅进行依赖管理
  1. 在子工程的pom.xml文件中,配置继承关系。
  2. 在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)。
注意事项
  • Maven中不支持多继承,但支持多重继承。
  • 在子工程中,配置了继承关系之后,坐标中的groupId是可以省略的,因为会自动继承父工程的 。
  • 子工程中需要指定父工程的相对位置:<relativePath>父工程的相对位置</relativePath>,默认为../pom.xml,如果使用<relativePath/>或不指定则会从本地仓库或远程仓库中查找这个父工程。
  • 若父子工程都配置了同一个依赖的不同版本,以子工程的为准。

版本锁定

  • 在Maven中,可以在父工程的pom文件中通过 <dependencyManagement> 来统一管理依赖版本,在这个标签中指定的依赖不会被引入。
<dependencyManagement>
    <dependencies>
        <!--引入依赖-->
    </dependencies>
</dependencyManagement>
  • 子工程引入依赖时,无需指定 <version> 版本号,父工程统一管理。变更依赖版本,只需在父工程中统一变更。
自定义属性/引用属性
  • 可以在父工程的pom文件中通过 <properties> 来自定义依赖版本属性,如:
<properties>
    <自定义标签名>版本号</自定义标签名>
</properties>
  • 然后可以在父工程和子工程的pom文件中使用<version>${自定义标签名}</version>引用这个依赖。

聚合

  • 聚合就是将多个模块组织成一个整体,同时进行项目的构建。
  • 聚合工程必须是一个不具有业务功能的“空”工程(有且仅有一个pom文件)。
  • 作用:快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建即可)。

使用方法

  • 通过 <modules> 设置当前聚合工程所包含的子模块名称:
<!--聚合-->
<modules>
    <module>模块相对路径</module>
    <module>模块相对路径</module>
    ...
</modules>
  • 聚合工程中所包含的模块,在构建时,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

继承与聚合的比较

继承 聚合
作用 用于快速构建项目 用于简化依赖配置、统一管理依赖
相同点 聚合与继承的pom.xml文件打包方式均为pom,一般都将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点 聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

私服

  • 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。
  • 依赖查找顺序:本地仓库 → 私服 → 中央仓库。
  • 私服在企业项目开发中,一个项目/公司,只需要一台即可。
  • 私服中有多个仓库,这些仓库分为三种:
    • RELEASE:存放上传的RELEASE版jar包。
    • SNAPSHOT:存放上传的SNAPSHOT版jar包。
    • CENTRAL:存放从中央仓库下载的jar包。
  • 项目版本:
    • RELEASE(发行版本):功能趋于稳定、当前更新停止,可以用于发行的版本,存储在私服中的RELEASE仓库中。
    • SNAPSHOT(快照版本):功能不稳定、尚处于开发中的版本,即快照版本,存储在私服的SNAPSHOT仓库中。

资源上传与下载

私服的配置

在Maven的settings.xml配置文件中,做如下配置:

  1. 在servers标签中,配置访问私服的个人凭证(访问的用户名和密码):
<server>
    <id>release仓库名</id>
    <username>用户名</username>
    <password>密码</password>
</server>
    
<server>
    <id>snapshot仓库名</id>
    <username>用户名</username>
    <password>密码</password>
</server>
  1. 在mirrors中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉):
<mirror>
    <id>私服名</id>
    <mirrorOf>*</mirrorOf>
    <url>私服地址</url>
</mirror>
  1. 在profiles中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用:
<profile>
    <id>allow-snapshots</id>
        <activation>
        	<activeByDefault>true</activeByDefault>
        </activation>
    <repositories>
        <repository>
            <id>私服名</id>
            <url>私服地址</url>
            <releases>
            	<enabled>true</enabled>
            </releases>
            <snapshots>
            	<enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>
  1. 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址):
<distributionManagement>
    <!-- release版本的发布地址 -->
    <repository>
        <id>release仓库名</id>
        <url>release仓库地址</url>
    </repository>
    
    <!-- snapshot版本的发布地址 -->
    <snapshotRepository>
        <id>snapshot仓库名</id>
        <url>snapshot仓库地址</url>
    </snapshotRepository>
</distributionManagement>

资源上传

直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)。

资源下载

直接在pom文件中引入依赖即可。

标签:依赖,聚合,JavaWeb,工程,私服,笔记,pom,模块,第十五天
From: https://www.cnblogs.com/zgg1h/p/18115693

相关文章

  • MPPT学习笔记
    一、基本概述基础算法有三种:恒定电压法(不算真正的mppt)、扰动观察法(Perturb and Observe algorithms,P&O)、电导增量法(Incremental Conductancealgorithm,INC)智能优化算法:粒子群算法(PSO)、万有引力搜索算法(GravitationalSearchAlgorithm,GSA)、布谷鸟算法(CSA)等。......
  • Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models
    NaturalLanguageProcessingSpecializationIntroductionhttps://www.coursera.org/specializations/natural-language-processingCertificateNaturalLanguageProcessingwithAttentionModelsCourseCertificate本文是学习这门课NaturalLanguageProcessing......
  • FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
    ​FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2 Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于op......
  • notification+Android笔记
    notification通知应用UI之外的消息并显示即推送;NotificationManager负责管理通知,例如显示取消,删除等;importandroid.app.Notification;importandroid.app.NotificationChannel;importandroid.app.NotificationManager;importandroid.content.Context;importandroid.......
  • javaWeb项目-家政服务管理系统功能介绍
    项目关键技术开发工具:IDEA、Eclipse编程语言:Java数据库:MySQL5.7+框架:ssm、Springboot前端:Vue、ElementUI关键技术:springboot、SSM、vue、MYSQL、MAVEN数据库工具:Navicat、SQLyog 1、B/S结构简介B/S结构最大的优点它不需要安装任何的系统,它所有的客户端就只是浏......
  • Linux守护进程之udev-笔记
    一、什么是udev?        udev 是Linux系统中的一个守护进程,它的主要任务是管理所有的设备节点。你可以把它想象成一个设备的“管家”,负责识别、监控和管理连接到计算机上的硬件设备。当一个新设备被连接到系统时,`udev`会立刻识别它,并为其创建相应的文件和目录,这......
  • 学习笔记
    前言先鸽一下qwq2024.3.31P1087[NOIP2004普及组]FBI树回来后的第一道题,简单回忆了一下树的遍历和递归。还好还是记得一点的,想再看看树的遍历,暂且鸽一下P1229。P1309[NOIP2011普及组]瑞士轮两年前的一直没改/cf思路还是记得的复习一下归并排序,写20min+调20min......
  • 基于springboot+JavaWeb技术的在线考试系统源码数据库
    基于JavaWeb技术的在线考试系统设计与实现摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于JavaWeb技术的在线考试系统设计与实现的开发全过程。通过分析基于JavaWeb技术的在线考试系统设计与实现管理的不足,创建了一......
  • JavaWeb学习笔记——第十四天
    SpringBoot原理配置优先级配置文件SpringBoot中支持三种格式的配置文件:application.properties,application.yml,application.yaml。其优先级为:application.properties>application.yml>application.yaml。注意事项虽然springboot支持多种格式配置文件,但是在项目......
  • Python数据分析与可视化笔记 九 分类问题
    分类        分类是找出数据库中一组数据对象的共同特点,并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。        分类学习是一类监督学习的问题,训练数据会包含其分类结果,根据分类结果分为以下几种问题。1.......