SpringCloud maven-assembly-plugin 多级目录打包
目录
- 1、spring-boot-maven-plugin
- 2、maven-assembly-plugin
- 3、maven-assembly-plugin打包后的可执行文件缺失lib问题
1、spring-boot-maven-plugin
springboot默认打包工具为spring-boot-maven-plugin
pom配置:
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.gsafety.bg.enterprise.EnterpriseApplication</mainClass><layout>ZIP</layout><!-- 打增量包时需要includes部分, 要打全量包删除includes --><includes><include><groupId>com.gsafety.bg</groupId><artifactId>enterprise-controller</artifactId></include><include><groupId>com.gsafety.bg</groupId><artifactId>enterprise-service</artifactId></include><include><groupId>com.gsafety.bg</groupId><artifactId>enterprise-dao</artifactId></include></includes></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions>
</plugin>
打包后的目录结构:
BOOT-INF内包含目录:lib(enterprise-service-1.0.0.jar、enterprise-dao-1.0.0.jar、enterprise-controller-1.0.0.jar)、classes、classpath.idx
2、maven-assembly-plugin
maven-assembly-plugin 插件的主要作用是允许用户将项目输出与它的依赖项、模块、站点文档、和其他文件一起组装成一个可分发的归档文件,简单的说,就是自定义打包的工具,有自己的配置文件(Assembly描述符文件)。微服务使用这个插件的概率比较高,平时普通的项目不需要这样的实现方式。
pom配置:
<plugin><artifactId>maven-assembly-plugin</artifactId><version>2.4.1</version><configuration><finalName>enterprise</finalName><encoding>utf-8</encoding><descriptors><descriptor>src/main/assembly/assembly.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin>
assembly.xml
全部可设置节点可参考官网:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
<assembly><id>1.0</id><formats><format>tar.gz</format></formats><includeBaseDirectory>true</includeBaseDirectory><!-- 项目所需lib包--><!-- <dependencySets>--><!-- <!–把依赖都打包进libs文件夹–>--><!-- <dependencySet>--><!-- <useProjectArtifact>true</useProjectArtifact>--><!-- <outputDirectory>libs</outputDirectory>--><!-- <scope>runtime</scope>--><!-- </dependencySet>--><!-- </dependencySets>--><fileSets><!--打包启动文件到deploy目录--><fileSet><!--需要打包的文件所在目录 即start.sh--><directory>src/main/assembly/bin</directory><!--要打包到的地址--><outputDirectory>deploy</outputDirectory><!--linux权限--><fileMode>0755</fileMode></fileSet><!--打包可执行jar到application-server目录--><fileSet><directory>target</directory><outputDirectory>application-server</outputDirectory><includes><include>*.jar</include></includes></fileSet><!--打包src/main/resources到logs/enterprise目录--><fileSet><directory>src/main/resources</directory><outputDirectory>logs/enterprise</outputDirectory><fileMode>0755</fileMode><!--打包不包含src/main/resources所有文件,即生成logs/enterprise空目录--><excludes><exclude>**/*</exclude></excludes></fileSet></fileSets>
</assembly>
打包后的目录结构:
查看application-server文件夹内可执行文件解压目录:
发现与spring-boot-maven-plugin打包后的目录不一致,明显缺少lib内的三个jar和其他一些文件
3、maven-assembly-plugin打包后的可执行文件缺失lib问题
修改pom文件:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.gsafety.bg.enterprise.EnterpriseApplication</mainClass><layout>ZIP</layout><!-- 打增量包时需要includes部分, 要打全量包删除includes --><includes><include><groupId>com.gsafety.bg</groupId><artifactId>enterprise-controller</artifactId></include><include><groupId>com.gsafety.bg</groupId><artifactId>enterprise-service</artifactId></include><include><groupId>com.gsafety.bg</groupId><artifactId>enterprise-dao</artifactId></include></includes></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><!-- 生成项目依赖到lib本地,并设置需要排除的jar--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>prepare-package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>../../../lib</outputDirectory><!-- 需要排除的jar的 groupId --><excludeArtifactIds>enterprise-controller,enterprise-service,enterprise-dao</excludeArtifactIds></configuration></execution></executions></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><version>2.4.1</version><configuration><finalName>enterprise</finalName><encoding>utf-8</encoding><descriptors><descriptor>src/main/assembly/assembly.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>
即plugins先引用spring-boot-maven-plugin 后引用maven-assembly-plugin,这样spring-boot-maven-plugin会将enterprise-service-1.0.0.jar、enterprise-dao-1.0.0.jar、enterprise-controller-1.0.0.jar三个jar打包到lib中,打包后maven-assembly-plugin就会将其打包进enterprise-1.0.tar.gz。
这样enterprise-1.0.tar.gz内就包含了启动文件(deploy)、可执行文件(application-server/enterprise-main-1.0.0.jar)、日志目录(logs/enterprise),符合目前项目部署的目录结构。
SpringCloud maven-assembly-plugin 多级目录打包相关推荐
- 使用Maven Assembly plugin将依赖打包进jar
一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar.以前采用fatjar进行 ...
- Maven Assembly Plugin - 如何将Maven工程打成一个可执行jar包
参考自: http://blog.csdn.net/symgdwyh/article/details/6081532 Maven Assembly Plugin http://maven.apache ...
- assembly plugin实现自定义打包
http://skydream.iteye.com/blog/437937 在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了实现自己需要的打包格式而使用maven ant task以ma ...
- maven assembly plugin使用
使用场景 在使用maven来管理项目时,项目除了web项目,还有可能为控制台程序,一般用于开发一些后台服务的程序.最近在工作中也遇到了这种场景,使用quartz开发一个任务调度程序.程序中依赖很多ja ...
- Maven自定义打包插件Assembly Plugin简单使用
使用Assembly Plugin实现自定义打包 1.修改pom.xml <!-- 编译时自动打包,规则见distribution.xml文件--> <build><pl ...
- Spring Boot 使用 Maven assembly 插件打包
文章目录 1 摘要 2 Maven 核心依赖与配置 2.1 pom.xml 配置 2.2 assembly 配置信息 3 启动与停止脚本 3.1 启动脚本 3.2 停止脚本 4 推荐参考资料 5 Gi ...
- maven assembly打包插件详解
定义 来自官方的定义: Maven Assembly Plugin relies on the provided assembly descriptors to dictate its executi ...
- Maven Assembly插件介绍
你是否想要创建一个包含脚本.配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包. Assembly插件会生成 "assemblies", 此 ...
- Maven assembly简谈
什么是Assembly? "assembly"是把一组文件.目录.依赖元素组装成一个归档文件. 比如, 假设一个 Maven project定义了一个JAR artifact,它包 ...
最新文章
- ubuntu mysql 驱动_怎么在Ubuntu下为MySQL添加ODBC驱动?
- 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题...
- 桌面图标摆放图案_用图标制作醒目的图案
- 在业务层实现记录请求日志
- fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...
- linux mariadb 乱码,MariaDB插入中文数据乱码解决过程
- Day9-HTML body属性
- php涉及数据库操作时响应很慢。
- 力扣-876 链表的中间结点
- 搭建 Hexo Blog
- mmdetection的使用
- 如何使用monitor(DDMS)抓取traceview文件
- 公路养护工证含金量高吗?在哪报考?
- DNS服务器安装(linux)
- Office 2016出现加载DLL失败或者库未注册的问题:0x8002801D或者0x80029C4A
- mysql精度_MySQL几种数据类型精度和标度的情况
- 分治法的思想与经典题目
- qwebkit的套壳开发
- 【贪玩巴斯】关于修改系统hosts文件提升网络访问速度以便于提高抢课几率(好文分享)//2021-2-10
- Discuz 的加密与解密函数authcode
热门文章
- 垃圾《Essential C++》
- Ubuntu系统查看硬件温度
- 基于树莓派和YS-LDV7语音识别模块实现声控灯
- 解决springboot中Map集合key中不能使用英文小数点问题
- 集合 Transformer(Set Transformer)
- 笔记本电脑连不上waifi怎么办
- 【软件工程导论】知识点汇总 | 适用于考试复习 | 轻松通过考试
- 直流偏置的matlab代码,三端口隔离DC-DC变换器的暂态直流偏置机理及抑制策略
- sqlserver取模_SQLSERVER教程
- (兼容正点原子引脚)OV7670 FIFO 30W摄像头介绍(一) --- 整体介绍/SCCB时序