【java】【重构二】分模块开发版本锁定以及耦合(打包)实战
目录
一、创建dependencyManagement标签
二、 将需要版本控制的依赖版本进行标签设置
三、将需要版本控制的依赖从各子模块迁移到此处
四、将父模块的依赖版本控制
五、删除子模块的全部版本
1、bocai-web-management模块
2、bocai-utils模块
六、打包
1、确定代码都可执行,无错误
2、bocai-parent加入标签
3、完整的bocai-parent的pom
3、打包
七、使用jar启动服务
前言:结合上篇《【java】【重构一】分模块开发设计实战》,进行版本锁定,明确dependencyManagement与dependencies区别
一、创建dependencyManagement标签
在父模块创建dependencyManagement以及dependencies
<!-- 7、 版本锁定 --><dependencyManagement><dependencies></dependencies></dependencyManagement>
二、 将需要版本控制的依赖版本进行标签设置
springboot项目无需控制
<properties><java.version>1.8</java.version><!-- 8、自定义属性 --><lombok.version>1.18.24</lombok.version><aliyun-sdk-oss.version>3.15.1</aliyun-sdk-oss.version><jaxb-api.version>2.3.1</jaxb-api.version><activation.version>1.1.1</activation.version><jaxb-runtime.version>2.3.3</jaxb-runtime.version><mybatis.version>2.3.1</mybatis.version><mysql-connector-j.version>8.0.31</mysql-connector-j.version><pagehelper.version>1.4.6</pagehelper.version><fastjson.version>1.2.76</fastjson.version><jjwt.version>0.9.0</jjwt.version><!-- 无需配置,因为springboot已经版本控制了 --><!--<spring-boot-starter-test.version>2.7.5</spring-boot-starter-test.version><spring-boot-starter-aop.version>2.7.5</spring-boot-starter-aop.version><spring-boot-starter-web.version>2.7.5</spring-boot-starter-web.version>--></properties>
三、将需要版本控制的依赖从各子模块迁移到此处
使用第二步设置的标签进行版本控制
<!-- 7、 版本锁定 --><dependencyManagement><dependencies><!-- 阿里云OSS依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${aliyun-sdk-oss.version}</version></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>${jaxb-api.version}</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>${activation.version}</version></dependency><!-- no more than 2.3.3--><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>${jaxb-runtime.version}</version></dependency><!--JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- mybatis起步依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope><version>${mysql-connector-j.version}</version></dependency><!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.version}</version></dependency><!--fastJSON--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- 100、 无需配置,因为在springboot当中已经版本控制了 --><!-- web起步依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring-boot-starter-web.version}</version></dependency>--><!-- springboot单元测试<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><version>${spring-boot-starter-test.version}</version></dependency>--><!--AOP<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>${spring-boot-starter-aop.version}</version></dependency>--></dependencies></dependencyManagement>
四、将父模块的依赖版本控制
<dependencies><!-- 6、 加入的公共依赖 --><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- 4、注释以下依赖 --><!--<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>--></dependencies>
五、删除子模块的全部版本
1、bocai-web-management模块
<!-- 3、加入 子模块依赖 --><dependency><groupId>com.bocai</groupId><artifactId>bocai-entity</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.bocai</groupId><artifactId>bocai-utils</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- 4、加入依赖 --><!-- web起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mybatis起步依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- mysql驱动 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><!-- springboot单元测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId></dependency><!--fastJSON--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><!--AOP--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency></dependencies>
2、bocai-utils模块
<dependencies><!-- 2、 注释 junit --><!--<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency>--><!-- 3、加入依赖 --><!-- web起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 阿里云OSS依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId></dependency><!-- no more than 2.3.3--><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId></dependency><!--JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId></dependency></dependencies>
六、打包
1、确定代码都可执行,无错误
略
2、bocai-parent加入<modules>标签
如果你是创建模块时选择了父Parent,是自动生成的
<!-- 8、 聚合 打包 这个是创建模块选择 父的时候自动创建的--><modules><module>../bocai-entity</module><module>../bocai-utils</module><module>../bocai-web-management</module></modules>
3、完整的bocai-parent的pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><!-- 1、修改为2.7.5 --><version>2.7.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bocai</groupId><artifactId>bocai-parent</artifactId><version>0.0.1-SNAPSHOT</version><!-- 2、新增设置打包模式为pom --><packaging>pom</packaging><!-- 8、 聚合 打包 这个是创建模块选择 父的时候自动创建的--><modules><module>../bocai-entity</module><module>../bocai-utils</module><module>../bocai-web-management</module></modules><!-- 3、注释 name与description --><!--<name>bocai-parent</name><description>bocai-parent</description>--><properties><java.version>1.8</java.version><!-- 8、自定义属性 --><lombok.version>1.18.24</lombok.version><aliyun-sdk-oss.version>3.15.1</aliyun-sdk-oss.version><jaxb-api.version>2.3.1</jaxb-api.version><activation.version>1.1.1</activation.version><jaxb-runtime.version>2.3.3</jaxb-runtime.version><mybatis.version>2.3.1</mybatis.version><mysql-connector-j.version>8.0.31</mysql-connector-j.version><pagehelper.version>1.4.6</pagehelper.version><fastjson.version>1.2.76</fastjson.version><jjwt.version>0.9.0</jjwt.version><!-- 无需配置,因为springboot已经版本控制了 --><!--<spring-boot-starter-test.version>2.7.5</spring-boot-starter-test.version><spring-boot-starter-aop.version>2.7.5</spring-boot-starter-aop.version><spring-boot-starter-web.version>2.7.5</spring-boot-starter-web.version>--></properties><dependencies><!-- 6、 加入的公共依赖 --><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- 4、注释以下依赖 --><!--<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>--></dependencies><!-- 7、 版本锁定 --><dependencyManagement><dependencies><!-- 阿里云OSS依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${aliyun-sdk-oss.version}</version></dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>${jaxb-api.version}</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>${activation.version}</version></dependency><!-- no more than 2.3.3--><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>${jaxb-runtime.version}</version></dependency><!--JWT令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- mybatis起步依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope><version>${mysql-connector-j.version}</version></dependency><!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.version}</version></dependency><!--fastJSON--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!-- 100、 无需配置,因为在springboot当中已经版本控制了 --><!-- web起步依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring-boot-starter-web.version}</version></dependency>--><!-- springboot单元测试<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><version>${spring-boot-starter-test.version}</version></dependency>--><!--AOP<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>${spring-boot-starter-aop.version}</version></dependency>--></dependencies></dependencyManagement><!-- 5、注释 build --><!--<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>--></project>
3、打包
选择父bocai-parent 生命周期的package
七、使用jar启动服务
这里有个关键是bocai-web-management的pom需要build标签
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
#cmd窗口java -jar 打包的jar包
相关文章:

【java】【重构二】分模块开发版本锁定以及耦合(打包)实战
目录 一、创建dependencyManagement标签 二、 将需要版本控制的依赖版本进行标签设置 三、将需要版本控制的依赖从各子模块迁移到此处 四、将父模块的依赖版本控制 五、删除子模块的全部版本 1、bocai-web-management模块 2、bocai-utils模块 六、打包 1、确定代码都…...

Excel提高工作效率常用功能
定位快捷键使用 CtrlG或者F5 根据不同类别插入空行 例:以下表,以部门为单位,每个部门后插入空白行 部门姓名出勤基本工资岗位津贴公体加班绩效基数工龄应发合计财务部姓名73115002101710财务部姓名11116006003401502363财务部姓名5271000…...

物联网_00_物理网介绍
1.物联网为什么会出现? 一句话-----追求更高品质的生活, 随着科技大爆炸, 人类当然会越来越追求衣来伸手饭来张口的懒惰高品质生活, 最早的物联网设备可以追溯到19世纪末的"在线可乐售卖机"和"特洛伊咖啡壶"(懒惰的技术人员为了能够实时看到物品的情况而设…...

华为智选SF5,AITO问界的车怎么样
#华为智选 #赛力斯SF5 #aito问界m5 #aito问界m7 #华为汽车 华为的车,后杠焊两点,拉车的时候,拖车钩断了,后杠拉出来了,这质量可以吗?是否应该全部召回?M5,M7是不是也这样?…...

大数据测试用例分析
基于大数据分析,对业务系统产生的日志进行智能分析,能够识别日志中的接口、参数、业务流,并依据分析的结果生成测试用例。 问题与背景 业务复杂 业务系统的复杂性,对测试人员的业务能力提出严格要求,加重测试成本。 …...
Java中的泛型:高效编程的利器
泛型—— 一种可以接收数据类型的数据类型。泛型是Java中的一种参数化类型机制,通过类型参数,可以在类、接口和方法中实现通用的代码。 泛型的引入 泛型(Generics)是 Java 编程语言中引入的一个重要特性,它可以让程序…...
Mysql的關鍵字或者保留字
1.group 不能用group作爲字段名 ### SQL: insert INTO biz_customer_group ( id,customer,group ) VALUES (?,?,?) ON DUPLICATE key update customer VALUES(customer), group VALUES(group) ### Cause: java.sql.SQLSyntaxErrorException: You have an error in your S…...

24、Flink 的table api与sql之Catalogs(java api操作分区与函数、表)-4
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

React基础: 项目创建 JSX 基础语法 React基础的组件使用 useState状态 基础样式控制
01 React 文章目录 01 React一、React是什么1、React的优势 二、React开发环境搭建1、创建项目2、运行项目3、项目的目录结构 三、JSX基础1、什么是 JSX代码示例: 2、JSX使用场景2.1代码示例: 3、JSX中实现列表渲染4、JSX - 实现基本的条件渲染5、JSX - …...

力扣每日一题49:字母异位词分组
题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate&quo…...

TechSmith Camtasia Studio 23.3.2.49471 Crack
全新的Camtasia 2023.2 Camtasia Studio是专业的屏幕录像和视频编辑的软件套装。软件提供了强大的屏幕录像(Camtasia Recorder)、视频的剪辑和编辑(Camtasia Studio)、视频菜单制作(Camtasia MenuMaker)、视…...

进程【Linux系统编程】
一、先谈硬件——冯诺依曼体系结构 存储器:内存(硬盘是外存) 输入设备:鼠标、键盘、摄像头、话筒、磁盘、网卡…… 输出设备:显示器、播放器硬件、磁盘、网卡…… 输入输出设备是外部设备,简称外设。 中央…...
【Edabit 算法 ★☆☆☆☆☆】【分钟转秒数】Convert Minutes into Seconds
【Edabit 算法 ★☆☆☆☆☆】【分钟转秒数】Convert Minutes into Seconds math numbers Instructions Write a function that takes an integer minutes and converts it to seconds. Examples convert(5) // 300 convert(3) // 180 convert(2) // 120Notes Don’t forge…...

Django实现音乐网站 ⒇
使用Python Django框架做一个音乐网站, 本篇音乐播放器-添加播放音乐功能实现。 目录 创建播放器数据表 设置表结构 执行创建表 命令 执行 数据表结构 添加单个歌曲 创建路由 加入播放器视图 模板处理 基类方法 子页面调用 优化弹窗 加入layui文件 基…...

C++类对象所占内存空间大小分析
前言 类占内存空间是只类实例化后占用内存空间的大小,类本身是不会占内存空间的。用 sizeof 计算类的大小时,实际上是计算该类实例化后对象的大小。空类占用1字节原因:C要求每个实例在内存中都有一个唯一地址,为了达到这个目的&am…...

绿肥红瘦专栏数据的爬取
前言 要想爬专栏,先得爬用户。要想爬用户,三个header参数挡住了去路:x-zst-81,x-zse-93,x-zse-96,经过搜索x-zse-96,定位到设置该字段的位置: 这个t2是固定的值,t0来自于…...
centos或aws linux部署java应用,环境搭建shell
目录 设置root密码开启密码登录安装docker安装nginx设置nginx自启动nginx配置https配置http集群tcp集群 安装docker设置docker自启动修改docker基础配置创建docker网关docker安装mysql单机版本主从版本 docker安装redis设置密码:不要密码: docker安装rab…...

2023年中国车用冲压模具行业特征、竞争现状及行业市场规模分析[图]
汽车冲压件模具具有尺寸大、型面复杂、精度要求高等特点,属于技术密集型产品。汽车冲压模具能快速精密地把材料直接加工成零件或半成品并通过焊接、铆接、拼装等工艺装配成零部件,冲压模具的设计开发和加工能力对汽车冲压零部件产品总制造成本、质量及性…...

基于Pytorch的CNN手写数字识别
作为深度学习小白,我想把自己学习的过程记录下来,作为实践部分,我会写一个通用框架,并会不断完善这个框架,作为自己的入门学习。因此略过环境搭建和基础知识的步骤,直接从代码实战开始。 一.下载数据集并加…...
Java设计模式之观察者模式(Observer Pattern)
观察者模式(Observer Pattern)是一种常用的软件设计模式,它用于在对象之间建立一种一对多的依赖关系,当一个对象的状态发生变化时,它的所有依赖对象都会得到通知并自动更新。观察者模式属于行为型模式。 在观察者模式…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...