使用maven快速生成打包文件3
这里再介绍一种打包方式,依赖包分开打包,直接将需要部署的文件打包成一个要锁文件,比如kafka-roma-bin.tar.gz,这里需要两个文件,一个pom2.xml,一个package.xml。
pom2.xml
<?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"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/></parent><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>kafka-roma</artifactId><version>1.0</version><name>kafka-roma</name><description>kafka-roma</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version><maven.test.skip>true</maven.test.skip></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.7.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.52</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><addMavenDescriptor>false</addMavenDescriptor><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>org.example.roma.KafkaRomaApplication</mainClass></manifest><manifestEntries><Class-Path>config/</Class-Path></manifestEntries></archive><excludes><classesDirectory>${project.basedir}/src/main/resources/</classesDirectory><exclude>*.properties</exclude><exclude>*.xml</exclude><exclude>*.yml</exclude></excludes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptors><descriptor>${project.basedir}/package.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><id>deploy</id><phase>package</phase><goals><goal>run</goal></goals><configuration><target><untar src="${project.build.directory}/${project.name}-bin.tar.gz" dest="${project.build.directory}" overwrite="true" compression="gzip"/></target></configuration></execution></executions></plugin></plugins></build></project>
注意这里采用(没有使用dependencyManagement,主要原因是使用dependencyManagement时,无法拷贝指定版本的依赖,比如pom文件中提到的kafka-clients,这里需要2.7.2的版本,但是使用dependencyManagement后,打包的版本一直是3.0.2,这个问题后面再研究一下)
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/>
</parent>
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><addMavenDescriptor>false</addMavenDescriptor><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>org.example.roma.KafkaRomaApplication</mainClass></manifest><manifestEntries><Class-Path>config/</Class-Path></manifestEntries></archive><excludes><classesDirectory>${project.basedir}/src/main/resources/</classesDirectory><exclude>*.properties</exclude><exclude>*.xml</exclude><exclude>*.yml</exclude></excludes></configuration>
</plugin>
这里采用maven-jar-plugin打包,需指定启动类,打包的路径以及需要排除的文件
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptors><descriptor>${project.basedir}/package.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin>
根据package.xml生成压缩文件
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><id>deploy</id><phase>package</phase><goals><goal>run</goal></goals><configuration><target><untar src="${project.build.directory}/${project.name}-bin.tar.gz" dest="${project.build.directory}" overwrite="true" compression="gzip"/></target></configuration></execution></executions>
</plugin>
将生成的压缩文件进行解压,根据个人需要,这部分可以去掉。
package.xml
<assembly><id>bin</id><formats><format>tar.gz</format></formats><dependencySets><dependencySet><useProjectArtifact>false</useProjectArtifact><outputDirectory>lib</outputDirectory><unpack>false</unpack></dependencySet></dependencySets><fileSets><fileSet><directory>${project.basedir}</directory><outputDirectory></outputDirectory><includes><include>README*</include><include>LICENSE*</include><include>NOTICE*</include></includes></fileSet><fileSet><directory>${project.basedir}/src/main/resources/</directory><outputDirectory>config</outputDirectory><includes><include>**/*.xml</include><include>*.yml</include><include>*.properties</include></includes></fileSet><fileSet><directory>${project.basedir}/src/main/bin/</directory><outputDirectory>bin</outputDirectory><includes><include>start.sh</include><include>stop.sh</include></includes></fileSet><fileSet><directory>${project.basedir}/src/main/bin/</directory><outputDirectory></outputDirectory><includes><include>run.bat</include><include>run.sh</include></includes></fileSet><fileSet><directory>${project.basedir}/cert/</directory><outputDirectory>cert</outputDirectory><includes><include>*.jks</include><include>*.crt</include></includes></fileSet><fileSet><directory>${project.build.directory}</directory><outputDirectory></outputDirectory><includes><include>*.jar</include></includes></fileSet></fileSets>
</assembly>
这里的配置配置比较简单,基本一看就知道,主要是设定打包的各个目录的文件构成。
打包
执行mvn clean package -f pom2.xml即可。
相关文章:

使用maven快速生成打包文件3
这里再介绍一种打包方式,依赖包分开打包,直接将需要部署的文件打包成一个要锁文件,比如kafka-roma-bin.tar.gz,这里需要两个文件,一个pom2.xml,一个package.xml。 pom2.xml <?xml version"1.0&q…...

Excel技巧(一)
快捷键技巧 原文链接 选取某一行的数据直到最后一行:【CTRL SHIFT ↓ 】或者选取一行后按住SHIFT键,双击下边线就可以快速选取区域。 如果表格中有多行空行,可以先按CTRL SHIFT END,再按CTRL SHIFT 上下键调整,…...

C语言:文件复制
文本文件复制: #include<stdio.h>int main() {FILE* pFile1 NULL;FILE* pFile2 NULL;fopen_s(&pFile1,"D:\\11111.txt","r");fopen_s(&pFile2,"D:\\222.txt", "w");char c;while((cfgetc(pFile1))!EOF){f…...

谈谈建筑项目管理:类型、流程和工具
无论是在材料采购还是供应商管理方面,确保建筑项目按计划进行并控制在预算内始终是一项挑战。 如今,建筑项目管理正逐步采用软件驱动的方法来提升其效率。这一转型显著优化了项目规划、调度和资源配置,使建筑管理更加精确和高效。 什么是建…...

【Vue】生命周期函数
系列文章目录 第五章 生命周期函数 文章目录 系列文章目录 生命周期函数代表的是Vue实例,或者是Vue组件,在网页中各个生命阶段所执行的函数。生命周期函数可以分为创建阶段、挂载阶段、更新阶段以及卸载阶段。 创建阶段:setup挂载阶段&…...

C++系列-文件操作
文件操作 文件类型文本文件二进制文件 文件操作的三大类文件的打开方式ios::app(append)和 ios::ate(at end) 写文件写文件文件步骤读文件文件步骤二进制文件读写写一般数据写特殊数据 程序运行时产生的数据都属于临时数据,一旦程序运行完毕,就会释放&am…...

ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南
目录 全面掌握:JavaScript解构赋值的终极指南 一、数组解构赋值 1、基本用法 2、跳过元素 3、剩余元素 4、默认值 二、对象解构赋值 1、基本用法 2、变量重命名 3、默认值 4、嵌套解构 三、复杂的嵌套结构解构 四、函数参数解构赋值 1、对象解构作为函…...

2-73 基于matlab的weber能量法求解齿轮时变啮合刚度的程序
基于matlab的weber能量法求解齿轮时变啮合刚度的程序,能够跑出刚度图,通过求解轮齿部分变形、基体变形及局部接触变形这三部分的变形,进而求得综合弹性变形,最终求出时变啮合刚度。程序已调通,可直接运行。 2- 73 齿轮…...

[C++]set和map的介绍及使用
关于set和map的接口函数部分,只重点介绍一些相较于别的容器有特殊地方的接口,set和map的接口可以触类旁通。 一、概念 (一)、关联式容器 关联式容器存储的元素是一个个的键值对<key,value>。通过键(key&#x…...

【MySQL】MySQL学习笔记(持续更新)
1. 安装MySQL(windows环境) (1)在http://www.mysql.com下载*.msi的安装文件,并运行安装: 如:mysql-installer-community-8.0.39.0.msi 全部安装包含如下内容: …...

ArcGIS如何将投影坐标系转回为地理坐标系
有时候两个数据,一个为投影坐标系,另一个为地理坐标系时,在GIS软件中位置无法叠加到一起,这需要将两个或多个数据的坐标系统一,可以直接将地理坐标系的数据进行投影,或将投影坐标系转为地理坐标系。下面介绍…...

Parallels Desktop 19 for Mac 安装虚拟机需要激活吗
Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机,并于其中装设不同的操作系统,如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时,您可在 …...

wps题注为表格或图片编号
word中为表格添加题注: 问题:多次或多人编辑导致--序号不能联动更新(域代码不一致,如图) 所以是否可以批量替换word里的域代码?如果可以这问题就解决了————失败 解决办法: 如图,复制表头&…...

集成测试怎么做?
任何产品想要长期保持高质量运行,集成测试正是实现这一目标必不可少的工具。 本文重点介绍集成测试实现的流程,而非测试工具本身。我们的目的是聚焦于创建测试过程中你可能遇到的问题,以便你能自主地推进工作。 缺陷的成本 细节决定成败&a…...

java mybatis 使用work id
在 MyBatis-Plus 中,如果你想要使用 WORK_ID 作为 ID 生成策略的一部分,通常是指使用雪花算法(Snowflake Algorithm)的一种变体来生成全局唯一 ID。雪花算法能够生成一个递增的 64 位整数作为 ID,这种 ID 在分布式系统…...

MySQL 的子查询(Subquery)
在数据库查询中,有时候我们需要从一个查询的结果集中获取数据,再将这些数据作为另一个查询的一部分来使用。MySQL 提供了子查询(Subquery)这一强大工具,帮助我们实现嵌套查询,从而解决复杂的数据检索需求。…...

后端Web之数据库(以MySQL为例)
目录 1.概述 2.MySQL 3.DDL 4.DML 5.DQL 1.概述 对于我们自己写的一些小功能,数据一般存储在文件中,比如XML文件。而在实际项目中,数据都是存放在数据库中的。数据库(DataBase )是一个存储数据的集合,…...

委托发布 | 进迭时空联合移动云能力中心实现业界首个RISC-V IO虚拟化方案
仟江水商业电讯(8月22日 北京 委托发布)虚拟化是云计算技术基石,是RISC-V走进云计算等高性能计算场景的必然要求。RISC-V国际基金会2021年制定了Hypervisor 1.0规范,2023年制定了AIA 1.0规范和IOMMU 1.0规范,这3个规范…...

3-Electron打开新窗口,并跳转到指定的路由
需要配置路由。src/router/index.js {path: "/selectMode",name: "selectMode",component: () > import("//view/selectMode/index.vue"),},src/**.vue import { ipcRenderer } from "electron";const openNewTab () > {let p…...

comfyUI和SD webUI都有哪些差别呢?
ComfyUI和SD WebUI都是用于AI绘画的用户界面,它们各自有着不同的特点和适用场景。以下是两者之间的一些关键差别: 1、用户体验与界面友好性: SD WebUI(Stable Diffusion Web User Interface)以其直观易用著称,特别受初…...

MySql中常用的sql语句大全(工作常用篇)
1. DDL 1.1 操作数据库 --创建库 create database 库名;--创建库时判断库是否存在,不存在则创建 create database if no exists 库名;--查看所有数据库 show databases;--使用指定数据库 use 库名;--查看当前指定数据库包含的数据表 show tables;--查看数据库的结…...

React+Vis.js(03):vis.js设置节点形状
文章目录 Vis支持的形状类型代码实现完整代码实现效果Vis支持的形状类型 circle(圆形)box(盒子)dot(点)star(五角星)triangle(三角形)ellipse(椭圆形)triangleDown(倒三角形)diamond(菱形)代码实现 通过shape属性来定义每个节点的形状 const nodes = new vis…...

Pod和Deployment
一、pod Evicted状态: 在Kubernetes中,当节点资源紧张时,Kubelet可能会驱逐节点上的一些Pods以释放资源。当这种情况发生时,Pod的状态会被设置为"Evicted"。 1.pod的探针 1.就绪性探针: 一般用于探测容器…...

7. 数据结构—二叉树(链式存储)
1. 内容 包括链式存储二叉树的 递归与非递归实现的先序、中序以及后序遍历、层序遍历、创建二叉树、计算深度、总节点数。 2. 实现代码 注意:只是伪代码,如果想要运行的话在细节方面需要自己修正,栈和队列的方法实现需要引进或者使用其C自…...

AScript 的UI asui模板的导入
两种方案: 第一种直接在web端,右击UI文件夹 第二种在pycharm,也是右击UI文件夹 调用UI,在init类中直接调用即可...

Linux shell编程学习笔记75:sed命令——沧海横流任我行(下)
0 前言 在 Linux shell编程学习笔记73:sed命令——沧海横流任我行(上)-CSDN博客文章浏览阅读684次,点赞32次,收藏24次。在大数据时代,我们要面对大量数据,有时需要对数据进行替换、删除、新增、…...

探索Scratch中的物理世界:碰撞与重力的编程之旅
标题:探索Scratch中的物理世界:碰撞与重力的编程之旅 Scratch是一款由麻省理工学院媒体实验室开发的编程教育工具,它以图形化编程界面为特色,让初学者能够轻松地学习编程基础。Scratch不仅支持基本的编程逻辑,如循环、…...

大模型重塑就医体验:医联MedGPT助力健康中国建设
来源:新华网 2024 08/22 11:24:15 【责任编辑:吴起龙】 随着“百模大战”的加速推进,AI大模型的应用逐渐成为各行业关注的焦点。在这一背景下,医疗行业也迎来了AI技术的深度渗透。自2023年起,百度、科大讯飞、百川智能、商汤…...

TOMCAT全解
目录 一 、WEB技术简介 HTTP协议 B/S 结构 前端三大核心技术简介 HTML CSS JavaScript 二 、WEB框架 web资源和访问 后台应用架构 三、tomacat的介绍 四、tomcat的部署 tomcat的反向代理 tomcat的负载均衡 memcached的安装与启动 tomcat的session会话保持 一 、WE…...

UDP+TCP
一、UDP协议 1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen); 参数:socket的fd; 保存数据的空间地址 ; 空间大小; 默认接收方式(默认阻塞…...