当前位置: 首页 > news >正文

Maven打包之maven-assembly-plugin

打包是一个比较头疼的事情,默认maven打包的结果只包含项目本身的代码,如果要执行代码,还得带上依赖。如果希望将所有依赖放到指定的文件夹下,再在目录下写入shell脚本等之类的事情。maven-shade-plugin插件不能满足需求,而maven-assembly-plugin插件能够帮我们合理地归档文件。

简单的使用

assembly提供了几种默认的打包方式,使用 descriptorRefs, descriptorRef 有 bin, jar-with-dependencies, src, project。【不建议使用】

代码语言:javascript

AI代码解释

<plugins> <plugin> <!-- NOTE: We don't need a groupId specification because the group is org.apache.maven.plugins ...which is assumed by default. --> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>

descriptor使用原理

assembly允许用户自定义归档文件格式,位置,结构等信息。允许配置并执行多个自定义配置。

所以每一个配置都需要一个唯一id来做区分。归档格式可以有tar.gz,dir,zip,war等等,允许同时归档出多种格式文件。对于打的jar包,可以指定输出目录。对于一组特定的文件,可以指定存放的文件夹。如果有单独需要存放的文件,也可以单独处理。

assembly配置

assembly配置分为两部分,一部分是assembly的配置文件,一部分是在pom.xml中的配置。

assembly配置文件

首先我们通过以下配置文件了解一下配置文件是怎么工作的。

代码语言:javascript

AI代码解释

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd http://maven.apache.org/ASSEMBLY/2.0.0 "> <!--唯一ID--> <id>assembly_test</id> <!--打包格式,允许同时有多个--> <formats> <format>tar.gz</format> <format>dir</format> <format>zip</format> </formats> <!--依赖jar包以及项目打包文件存储文件--> <dependencySets> <dependencySet> <!--存储在projectName-assembly-version/lib下--> <outputDirectory>lib</outputDirectory> </dependencySet> </dependencySets> <fileSets> <fileSet> <!--目录路径,如果不在这里指定,而在include中指定,那么其文件夹的也会被带进去--> <directory>src/main/bin/</directory> <includes> <!--要哪些文件--> <include>*.*</include> </includes> <excludes> <!--不要哪些文件--> <exclude>*.no_need</exclude> </excludes> <!--文件的权限--> <fileMode>0755</fileMode> <!--输出目录 存储在projectName-assembly-version/bin下--> <outputDirectory>bin</outputDirectory> <directoryMode>0755</directoryMode> </fileSet> </fileSets> <files> <!--针对单个文件--> <file> <!--源文件地址,相对于项目地址--> <source>pom.xml</source> <!--输出目录为projectName-assembly-version/--> <outputDirectory>.</outputDirectory> <!--文件的权限--> <fileMode>0755</fileMode> <!--重命名为--> <destName>pom.xml</destName> </file> </files> </assembly>

pom中的配置

assembly插件在pom中配置较为简单,但需要配置maven自带的插件实现main方法添加和classpath依赖。假设上边的assembly配置文件在src/main/assembly/assembly.xml

pom配置内容为

代码语言:javascript

AI代码解释

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <!--运行jar包时运行的主类,要求类全名--> <mainClass>com.gavinzh.learn.assembly.Main</mainClass> <!-- 是否指定项目classpath下的依赖 --> <addClasspath>true</addClasspath> <!-- 指定依赖的时候声明前缀 --> <!--<classpathPrefix>./</classpathPrefix>--> </manifest> </archive> </configuration> </plugin> <plugin> <!-- NOTE: We don't need a groupId specification because the group is org.apache.maven.plugins ...which is assumed by default. --> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <descriptors> <descriptor>src/main/assembly/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>assembly_test</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

参考

Apache Maven Assembly Plugin

https://www.jianshu.com/p/14bcb17b99e0

http://www.jsqmd.com/news/339362/

相关文章:

  • mevan pom.xml常见问题
  • 使用VR触觉手套进行更安全的飞机货物舱门操作培训
  • 基于Springboot党员学习交流平台【附源码+文档】
  • 【毕业设计】基于Vue.js和Node.js线上美术馆网站平台(源码+文档+远程调试,全bao定制等)
  • 代码补全新突破:用简单grep实现比复杂RAG快35倍的高效检索
  • 解题随笔:贪心
  • 基于Springboot公司资产管理系统【附源码+文档】
  • Java开发者必看!从入门到精通掌握AI应用开发(建议收藏)
  • 密码学之三 —— KMS、MPC
  • 基于开普勒优化算法的Otsu多阈值分割附Matlab代码
  • CodeTop-0203Day02
  • 【1002】10.4-10.8
  • 【毕业设计】基于net的实验室管理信息系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 2026 最好用的 OCR 文字识别工具推荐(在线 + API + 本地全对比)
  • 基于单片机的小功率数控直流稳压电源设计
  • stm32毕业论文(毕设)本科生任务书大全
  • 【1002】10.10,11.1-11.5
  • 【毕业设计】基于net的线上阳光好书系统(源码+文档+远程调试,全bao定制等)
  • 从金鱼记忆到博学大脑:构建AI Agent的专业检索系统全攻略
  • Net毕设项目推荐-基于ASP.NET的线上阳光好书系统基于net的线上阳光好书系统【附源码+文档,调试定制服务】
  • 基于STM32肺活量测量装置设计
  • 粒子群算法改进高斯过程回归(PSO-GPR)的锂电池剩余寿命预测附Matlab代码
  • 数字图像处理篇---Sobel算子
  • 基于微信小程序的校园跑腿系统的设计与实现
  • javascript之双重循环
  • Net计算机毕设之基于net的实验室管理信息系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 基于萤火虫算法优化LSSVM的风速预测附Matlab代码
  • 商用音乐平台的音乐版权是否可靠?一文看懂如何避坑
  • 【毕业设计】基于net的西安文化旅游信息管理系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 倍福PLC数据 转 SNMP项目案例