首页 > 其他分享 >maven maven-assembly-plugin 开发自己的descriptorRef

maven maven-assembly-plugin 开发自己的descriptorRef

时间:2023-01-17 23:22:06浏览次数:64  
标签:assembly plugin jar descriptorRef maven https

日常中大家应该使用过maven-assembly-plugin 进行软件打包,maven-assembly-plugi 内部已经提供了几个开箱即用的descriptorRef,
主要是: bin,jar-with-dependencies,project,src 实际处理可以参考插件源码,我们一般都是自己编写assembly 文件,如果为了项目的统一
性以及灵活行可以开发自己的descriptorRef,比如dremio 为了方便处理就自己开发了一个

原理

descriptorRef 开发实际上还是比较简单的,核心就是定义好assembly 文件,然后按照descriptorRef的格式打包好,之后在使用插件的时候
添加依赖就可以了
参考格式,如下图

 

 

自定义模式

实际上就是参考上边的写文件就行了,如下 

 

 


server-tarball.xml

 
<?xml version="1.0"?>
<assembly xmlns="https://maven.apache.org/ASSEMBLY/2.1.1"
          xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://maven.apache.org/xsd/assembly-2.1.1.xsd https://maven.apache.org/xsd/assembly-component-2.1.1.xsd">
  <id>binary-relase</id>
  <formats>
    <format>tar.gz</format>
    <format>dir</format>
    <format>jar</format>
    <format>war</format>
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>
  <componentDescriptors>
    <componentDescriptor>
      /core-component.xml</componentDescriptor>
  </componentDescriptors>
</assembly>

core-component.xml

<?xml version="1.0"?>
<component>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>jar</outputDirectory>
            <includes>
                <include>com.alibaba.*:*:jar</include>
                <include>com.dalong:*:jar</include>
            </includes>
            <scope>runtime</scope>
        </dependencySet>
 
    </dependencySets>
</component>

项目集成使用

主要是maven-assembly-plugin 插件添加依赖

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.4.2</version>
    <executions>
        <execution>
            <id>distro-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>server-tarball</descriptorRef>
                </descriptorRefs>
                <appendAssemblyId>false</appendAssemblyId>
                <finalName>${my.distribution.name}-${project.version}</finalName>
                <tarLongFileMode>gnu</tarLongFileMode>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.dalong</groupId>
            <artifactId>resources</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</plugin>

备注: 完整代码参考链接的github

说明

spring boot maven plugin 做的特别好,提供了开箱即用的能力但是很多时候一些小项目我们使用的可能就不是spring boot 了,可能是其他轻量级框架了,同时
基于以上自定义扩展进行软件打包还是比较重要的

参考资料

https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
https://github.com/apache/maven-assembly-plugin
https://github.com/rongfengliang/flatten-maven-plugin-maven-assembly-plugin-learning

标签:assembly,plugin,jar,descriptorRef,maven,https
From: https://www.cnblogs.com/rongfengliang/p/17058918.html

相关文章

  • Maven 构建生命周期
    Maven构建生命周期Maven构建生命周期定义了一个项目构建跟发布的过程。一个典型的Maven构建(build)生命周期是由以下几个阶段的序列组成的:   验证 valid......
  • Maven
    Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。​依赖管理工具,管理jar包(多模块,一致的项目结构,一致的构建模型和插件机制)​脱离IDE环境,构建管理工具​ma......
  • Maven 环境配置
    Maven是一个基于Java的工具,所以要做的第一件事情就是安装JDK。如果你还未安装JDK,可以参考我们的 Java开发环境配置。系统要求JDKMaven3.3要求JDK1.7或......
  • Maven 特点
    项目设置遵循统一的规则。任意工程中共享。依赖管理包括自动更新。一个庞大且不断增长的库。可扩展,能够轻松编写Java或脚本语言的插件。只需很少或不需要额外配置......
  • Maven 功能
    Maven功能Maven能够帮助开发者完成以下工作:构建文档生成报告依赖SCMs发布分发邮件列表......
  • Maven 教程
    本教程已为初学者准备,以帮助他们了解Maven工具的基本功能。完成本教程后,您会发现自己在使用ApacheMaven方面具有中等水平的专业知识,从这里您可以进入更高的层次。Maven......
  • Maven 安装及配置大体可以划分为三个步骤:下载、安装和配置。
    Maven安装及配置大体可以划分为三个步骤:下载、安装和配置。下载打开Maven官方下载页面:https://maven.apache.org/download.cgi#,点击下载链接即可开始下载:以Maven3.......
  • Solidity 中编写内联汇编(assembly)
    汇编相关知识介绍什么是汇编?任何以高级语言(例如C,Go或Java)编写的程序,在执行之前都将先编译为“汇编语言”。但是什么是汇编?汇编(也称为汇编语言)是指可使用​​汇编器​​转......
  • Maven配置多仓库
    出于安全的考虑,maven默认是不会去使用snapshot包的,所以,如果你有需要使用snapshot包(很多公司可能大量使用),那么你就需要配置SNAPSHOT为允许了<repository>......
  • maven 私服源配置 阿里云源配置
    1.源的优先级配置1.1,查看系统maven配置目录命令:mvn-v安排目录是:/usr/local/Cellar/maven/3.8.7/libexec/conf/settings.xml1.2,用户所在配置目录~/.m2/settings.......