news 2026/4/23 13:15:26

Maven打包之maven-assembly-plugin

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 12:17:42

Net毕设项目推荐-基于ASP.NET的线上阳光好书系统基于net的线上阳光好书系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/15 20:17:04

使用VR触觉手套进行更安全的飞机货物舱门操作培训

VRARRI公司通过SenseGlove Nova 2触觉手套提供更安全、更灵活和更经济高效的飞机货舱门操作训练。VRARRI航空VR培训Nihon XR Center&#xff0c;在旧金山、印度和日本设有基地&#xff0c;以创造娱乐和培训领域的前沿VR内容。在娱乐部门&#xff0c;该公司于2025年8月开设了其旗…

作者头像 李华
网站建设 2026/4/21 11:33:31

数据不再混乱!JSON Crack 可视化 + cpolar,随时随地搞定复杂数据协作

JSON Crack 作为一款免费开源的数据可视化工具&#xff0c;核心功能是将 JSON、YAML、XML 等格式的文本代码转化为树状图、表格、柱状图等直观的可视化图表&#xff0c;还支持多格式互相转换、导出图片和 Markdown 文档&#xff0c;适配 Windows、macOS、Linux 多系统&#xff…

作者头像 李华
网站建设 2026/4/20 16:42:09

2026年简历制作免费模板下载:高效打造专业求职简历

在各大求职网站和模板库里苦苦搜寻“简历制作免费模板下载”吗&#xff1f;下载、填写、修改&#xff0c;一通操作后却发现模板千篇一律&#xff0c;自己的经历难以完美适配&#xff0c;投出去后依然石沉大海。进入2026年&#xff0c;求职竞争愈发激烈&#xff0c;HR和ATS&…

作者头像 李华
网站建设 2026/4/21 1:34:50

2.3 深度教程:《从零到一:使用CSGHub搭建企业级开源模型管理平台》

企业在用大模型之前&#xff0c;往往低估了“管理”这件事 很多企业第一次接触大模型&#xff0c;关注点都很直接&#xff1a;模型效果如何、成本高不高、能不能尽快跑起来。真正开始在业务中使用之后&#xff0c;问题才逐渐暴露出来。模型版本更新频繁&#xff0c;模型来源复…

作者头像 李华