news 2026/6/10 14:10:07

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/6/10 11:27:26

基于微信小程序的校园跑腿系统的设计与实现

文章目录 详细视频演示项目介绍技术介绍功能介绍核心代码系统效果图源码获取 详细视频演示 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 在高校校园中&#xff0c;学生常面临时间紧张、事务繁杂等问题&#xff0c;如取快递、买日用…

作者头像 李华
网站建设 2026/6/10 13:44:14

数字图像处理篇---HDE

我用最通俗的方式介绍HED——这是用深度学习做边缘检测的里程碑。 一句话核心思想 HED “用AI学画画的小孩” 传统的Canny、Sobel是老师教规则&#xff08;“看到颜色突变就画线”&#xff09;&#xff0c;而HED是让AI自己看千万张图&#xff0c;学会“物体的轮廓应该怎么画…

作者头像 李华
网站建设 2026/6/10 11:08:52

对比分析:CSGHub vs. Hugging Face:模型管理平台选型对

平台定位与设计目标 在大模型相关的平台选型中&#xff0c;Hugging Face 往往是最早被采用的方案。它以公共平台形态存在&#xff0c;围绕模型、数据集和工具构建了高度开放的生态体系&#xff0c;其核心价值在于模型的获取效率和社区协作能力。 CSGHub 的设计目标则明显不同…

作者头像 李华
网站建设 2026/6/10 11:10:29

毕业论文AI率爆表?亲测免费降AI率工具,一键解决论文AIGC率高问题

这几年&#xff0c;越来越多学校明确要求毕业论文要进行 AIGC检测。不少同学发现&#xff0c;同一篇论文&#xff0c;用不同系统检测结果差别很大。 比如&#xff0c;有同学在知网查到的结果是 0%&#xff0c;但放到维普一测&#xff0c;结果却高达 46%。一时间大家都懵了&…

作者头像 李华