news 2026/3/24 11:33:23

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/3/15 20:27:48

遗传算法的静态二维栅格路径规划附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/3/20 9:28:55

计算机Net毕设实战-基于net的实验室管理信息系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华
网站建设 2026/3/15 12:06:48

上海靠谱电子产品开发,实邦电子经验丰富吗?

上海靠谱电子产品开发&#xff0c;实邦电子经验丰富尽显实力公司简介&#xff1a;十六载深耕&#xff0c;铸就电子行业典范上海实邦电子科技有限公司自 2009 年成立以来&#xff0c;至今已稳健发展 16 年。在这 16 年的岁月里&#xff0c;实邦电子凭借着对电子科技领域的执着追…

作者头像 李华
网站建设 2026/3/20 7:28:12

金仓赋能:关系数据库替换高效落地,Oracle 平滑迁移

在国产化替代的大背景下&#xff0c;不少政企单位都面临着核心系统Oracle数据库的替换难题——毕竟很多老系统跑了十几年&#xff0c;核心业务逻辑全绑在Oracle上&#xff0c;一旦迁移出问题&#xff0c;损失不堪设想。这两年经手过不少Oracle转金仓的项目&#xff0c;从金融行…

作者头像 李华