最近咱们项目愈来愈多了,而后我就在想如何才能把基础服务的打包方式统一块儿来,而且能够实现按照咱们的要求来生成,经过研究,咱们经过使用maven的assembly插件完美的实现了该需求,爽爆了有木有。本文分享该插件的配置以及微服务的统一打包方式。html
1.首先咱们须要在pom.xml中配置maven的assembly插件git
2.接着咱们在src/main/assembly文件中配置assembly.xml文件github
其中,生成的lib文件夹下放该项目的全部依赖以及该服务jar包,src/main/bin文件夹下咱们通常放start.sh和stop.sh两个脚本文件用来开启和关闭该服务,打包后直接放到根目录下。生成的tar.gz文件的名字为:maven-assembly-plugin插件中配置的finalName-assembly.xml配置的id(若assembly中没有指定id,则只有前半部分).apache
assembly的具体语法,请参见官网:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.htmlmaven
这里面涉及到如何生成可执行的jar包,具体参见:用Maven快速生成带有依赖的可执行jar包ide
3.项目目录结构微服务
其中红色方框内就是经过assembly插件是生成的tar.gz文件,解压后里面的结构以下:工具
其中lib目录下是本项目生成的可执行jar包以及它的全部依赖jar包。若assembly插件中配置<useProjectArtifact>为false,则不会生成assembly-demo文件夹,直接就是lib文件夹以及两个脚本文件。插件
代码Github地址:https://github.com/hafizzhang/assembly-demo.gitxml
4.打包方式思考
咱们经过这种方式,每一个微服务就是一个以服务名称命名的tar.gz文件,解压后里面lib目录下是该服务生成的可执行jar包以及它全部的依赖jar包,咱们直接运行根目录下start.sh和stop.sh两个脚本文件来进行服务的开启和关闭。风格统一,简单明了!
随着微服务的愈来愈火,咱们将服务进行细粒度拆分后,也须要很好的把服务的打包以及部署方式进行统一,这样咱们就能够走自动化发布工具来进行统一服务的管理和部署,使得愈来愈方便。