讲师中心 微信公众号
AI工具推荐 视频效率加速

Maven 中怎么使用 assembly 描述文件自定义打包结构

阿晨姑娘_6972

阿晨姑娘_6972

发布时间:2026-08-10 16:10:07

|

542人浏览过

|

来源于php中文网

原创

在 Maven 中使用 assembly 插件自定义打包结构,核心是编写 XML 格式的 assembly descriptor 文件(如 src/assembly/bin.xml),并通过 maven-assembly-plugin 引用它来控制包内容、目录结构和归档格式;需在 pom.xml 中配置插件、指定 descriptor 路径、设置 formats、fileSets 和 dependencySets 等元素,并可通过 dir 格式或调试参数验证结果。

maven 中怎么使用 assembly 描述文件自定义打包结构

在 Maven 中使用 assembly 插件自定义打包结构,核心是编写一个 assembly descriptor(描述文件),再通过 maven-assembly-plugin 引用它来控制最终生成的包内容、目录结构和文件归档方式。

准备 assembly 描述文件

描述文件通常为 XML 格式(如 src/assembly/bin.xml),定义要包含的文件、目录、依赖、模块等。Maven 不强制文件位置,但建议放在 src/assembly/ 下便于管理。

基础结构示例如下:

<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
          https://maven.apache.org/xsd/assembly-2.0.0.xsd">
  <id>bin</id>
  <formats>
    <format>tar.gz</format>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>src/main/scripts</directory>
      <outputDirectory>bin</outputDirectory>
      <fileMode>0755</fileMode>
    </fileSet>
  </fileSets>
  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</assembly>

关键点说明:

  • id:用于生成归档文件名后缀,如 myapp-bin.tar.gz
  • formats:指定输出格式,支持 jar、tar.gz、zip、dir 等
  • fileSets:复制项目内文件或目录,可设权限(fileMode)、目标路径(outputDirectory)
  • dependencySets:控制依赖 JAR 的打包方式,useProjectArtifact 决定是否包含当前项目主 JAR

在 pom.xml 中配置插件并引用 descriptor

在 pom.xml 的 <build><plugins> 中添加 maven-assembly-plugin,并指定 descriptor 文件路径:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>3.6.0</version>
  <configuration>
    <descriptor>src/assembly/bin.xml</descriptor>
    <archive>
      <manifest>
        <mainClass>com.example.Main</mainClass>
      </manifest>
    </archive>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

注意:

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载
  • <descriptor> 指向你写的 XML 文件;也可用 <descriptors> 列表支持多个 descriptor
  • <archive> 部分可配置 MANIFEST.MF(如设置 Main-Class),对可执行 JAR 或脚本启动很重要
  • <phase>package</phase> 表示在 mvn package 阶段触发打包

常用 descriptor 元素与技巧

除了 fileSet 和 dependencySet,还可灵活组合以下元素:

  • moduleSets:打包多模块项目中的其他子模块输出(适合聚合项目)
  • files:单个文件复制(比 fileSet 更细粒度,可重命名)
  • containerDescriptorHandlers:处理特殊资源(如 Spring Boot 的 META-INF/spring.factories)
  • filters:配合 Maven 资源过滤,在打包时替换占位符(如 ${project.version})

例如,把当前项目 JAR 放进 lib/ 目录并重命名:

<dependencySet>
  <outputDirectory>lib</outputDirectory>
  <useProjectArtifact>true</useProjectArtifact>
  <includes>
    <include>${project.groupId}:${project.artifactId}</include>
  </includes>
  <outputFileNameMapping>${artifact.artifactId}-${artifact.version}-full.${artifact.extension}</outputFileNameMapping>
</dependencySet>

验证与调试打包结果

执行 mvn clean package 后,检查 target/ 目录下是否生成了预期格式的归档包(如 myapp-1.0-bin.tar.gz)。解压后确认结构是否符合 descriptor 定义。

若结果不符,可启用调试日志:

  • 加参数 -X 查看 assembly 插件详细执行过程
  • 用 <debug>true</debug> 在 plugin configuration 中开启内部调试输出
  • 临时将 <formats> 设为 <format>dir</format>,直接生成解压后的文件夹便于快速验证目录结构

不复杂但容易忽略细节,比如 fileMode 在 Windows 下无效、scope 设置不当导致依赖缺失、路径未用 ${project.basedir} 导致跨环境失败等。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

2960

2025.09.15

Java Maven/Gradle 构建与依赖管理合集
Java Maven/Gradle 构建与依赖管理合集

系统讲解 Java 项目构建工具的使用与进阶配置,涵盖 Maven 的 POM 文件结构、生命周期(clean/compile/package/install/deploy)与插件机制、依赖范围(compile/provided/test/runtime)与传递依赖管理、多模块聚合与继承、私有 Nexus 仓库发布,以及 Gradle 的 Groovy / Kotlin DSL 语法、Task 自定义与增量构建、依赖版本目录(Versi

329

2026.05.09

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

80

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

20

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

20

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

20

2026.09.22

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

40

2026.09.22

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

20

2026.09.22

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

20

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn