一、背景

最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用maven的assembly插件完美的实现了该需求,爽爆了有木有。本文分享该插件的配置以及微服务的统一打包方式。

二、配置步骤及其他事项

1.首先我们需要在pom.xml中配置maven的assembly插件

1

2

3

4 org.apache.maven.plugins

5 maven-jar-plugin

6 2.3.1

7

8

9

10

11 com.hafiz.Runner

12

13 true

14

15 ./

16

17

18

19

20

21 org.apache.maven.plugins

22 maven-assembly-plugin

23

24

25 make-assembly

26 package

27

28 single

29

30

31 ${project.name}

32 src/main/assembly/assembly.xml

33

34

35

36

37

38

2.接着我们在src/main/assembly文件中配置assembly.xml文件

1

2

3

4 tar.gz

5

6

7 true

8

9

10

11 true

12 lib

13

14 runtime

15

16

17

18

19 src/main/bin

20 /

21

22

23

其中,生成的lib文件夹下放该项目的所有依赖以及该服务jar包,src/main/bin文件夹下我们一般放start.sh和stop.sh两个脚本文件用来开启和关闭该服务,打包后直接放到根目录下。生成的tar.gz文件的名字为:[maven-assembly-plugin插件中配置的finalName]-[assembly.xml配置的id(若assembly中没有指定id,则只有前半部分)].

这里面涉及到如何生成可执行的jar包,具体参见:

3.项目目录结构

其中红色方框内就是通过assembly插件是生成的tar.gz文件,解压后里面的结构如下:

其中lib目录下是本项目生成的可执行jar包以及它的所有依赖jar包。若assembly插件中配置为false,则不会生成assembly-demo文件夹,直接就是lib文件夹以及两个脚本文件。

4.打包方式思考

我们通过这种方式,每个微服务就是一个以服务名称命名的tar.gz文件,解压后里面lib目录下是该服务生成的可执行jar包以及它所有的依赖jar包,我们直接运行根目录下start.sh和stop.sh两个脚本文件来进行服务的开启和关闭。风格统一,简单明了!

三、总结

随着微服务的越来越火,我们将服务进行细粒度拆分后,也需要很好的把服务的打包以及部署方式进行统一,这样我们就可以走自动化发布工具来进行统一服务的管理和部署,使得越来越方便。

java assembly 打包_使用Maven的assembly插件实现自定义打包相关推荐

  1. 使用Maven的assembly插件实现自定义打包

    一.背景 最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用maven的assembly插件完美的实现了该需求,爽爆了有 ...

  2. java maven jar 打包_使用Maven打包可运行jar和javaagent.jar的区别

    简介 javaagent 是 Java1.5 之后引入的新特性,其主要作用是在class被加载之前对其拦截,以插入我们的字节码. java1.5 之前使用的是JVMTI(jvm tool interf ...

  3. java main 运行_使用maven运行Java Main的三种方法解析

    导读热词 maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compi ...

  4. java plug机制_【maven实战】20-插件解析机制

    插件仓库:与依赖构件一样,插件构件同样基于坐标存储在maven仓库中,在需要的时候maven会从本地仓库中查找插件,如果不存在则从远程仓库查找.找到插件后在下载到本地仓库使用.值得一提的是maven会 ...

  5. java protobuf 例子_用 Maven 实现一个 protobuf 的 Java语言例子

    1. 介绍Protocol Buffers 在我们学习Java语言的路上,我们知道Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RP ...

  6. java protobuf 例子_用Maven实现一个protobuf的Java例子

    注:试验环境在Mac Idea环境下 1. 介绍Protocol Buffers Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化.反序列化,常用于RP ...

  7. docker多个容器一起打包_详解Docker 容器基础系统镜像打包

    因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具.根据这个思路,我们就可以构建一个自己的容器基础系统镜像. 构建标准的 Li ...

  8. jadx重新打包_反编译一款APP然后重新打包(Windows环境)

    最近有小伙伴私信我,怎么把一款APP改成自己的信息呀,咳咳,这又来送题材了,今天水一把APP反编译+回编译,文中会针对一款APP进行简单的修改信息,问问题的小伙伴还不火速右上角支持一下. MacOS跟 ...

  9. java 倒序分页_翻动100万级的数据(自定义的MSSQL分页查询过程)

    翻动 100 万级的数据 -- 只需几十毫秒 之揭秘篇:有详细的说明,不要错过. 感谢大家的支持!!! 昨天发了一个邀请,邀请大家帮忙测试,效果还可以,下面小结一下: 通过内部的计数器得知:访问次数是 ...

最新文章

  1. 客快物流大数据项目(十一):Docker应用部署
  2. VSTO之旅系列(一):VSTO入门
  3. iostat命令(转)
  4. numpy和pandas的基础索引切片
  5. java while do循环_c语言中,while 和 do while 循环的主要区别是( )
  6. Java注释是一个大错误
  7. 数字填图问题matlab上机实验报告,数学建模实验报告数字填图问题
  8. 几个互联网巨头的社区团购还不收手?
  9. HttpURLConnection请求数据流的写入(write)和读取(read)
  10. 华硕Z77系列主板怎么进行超频设置?
  11. python 进阶_GitHub - eastlakeside/interpy-zh: 《Python进阶》(Intermediate Python 中文版)...
  12. UltraEdit如何激活
  13. OneNote for win10 无法加载笔记本
  14. Matlab分号的使用
  15. 中学生应具备的良好的学习习惯
  16. Web前端实训两天记录
  17. Perfmon - Windows 自带系统监控工具
  18. hdu4114.Disney's FastPass
  19. 恒讯科技报告:2021-2026年泰国数据中心市场机会
  20. ImageNet预训练参数和随机初始化参数训练效果对比

热门文章

  1. 游戏开发中游戏性能的优化
  2. 机器学习实战 - 基于概率论的分类方法:朴素贝叶斯
  3. python爬取文章保存为txt_爬取博主所有文章并保存到本地(.txt版)--python3.6
  4. 建模大神用zbrush软件绘制 LOL中的Lissandra
  5. Pandas数据分析初学--开始了解数据
  6. [转]三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法
  7. java 中的位移运算
  8. linux文件前三行如何排序,Sort工具Linux sort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序。sort 常见选项b 忽略每行前面开始出...
  9. 动画实例类接口:GetOwningActor-获得拥有者Actor
  10. Windows Azure 解决方案系列: 开发拓展搜索-救援应用程序,拯救更多溺水者