• Maven3种打包方式之一maven-assembly-plugin的使用


    Maven中,主要有3个插件可以用来打包:

    • maven-jar-plugin,默认的打包插件,用来打普通的project JAR包;
    • maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包;
    • maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等。

    我们日常使用的以maven-assembly-plugin为最多,因为大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化。
    要使用该插件,就在项目pom文件中加入以下内容。

        
            
                
                    org.apache.maven.plugins
                    maven-assembly-plugin
                    ${maven-assembly-plugin.version}
                    
                        
                            make-assembly
                            
                            package
                            
                                
                                single
                            
                        
                    
                    
                        
                        src/main/assembly/assembly.xml
                        
                    
                
            
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    assembly插件的打包方式是通过descriptor(描述符)来定义的。
    Maven预先定义好的描述符有bin,src,project,jar-with-dependencies等。比较常用的是jar-with-dependencies,它是将所有外部依赖JAR都加入生成的JAR包中,比较傻瓜化。
    但要真正达到自定义打包的效果,就需要自己写描述符文件,格式为XML。下面是我们的项目中常用的一种配置。

    
        assembly
    
        
            tar.gz
        
    
        true
    
        
            
                src/main/bin
                
                    *.sh
                
                bin
                0755
            
            
                src/main/conf
                conf
            
            
                src/main/sql
                
                    *.sql
                
                sql
            
            
                target/classes/
                
                    *.properties
                    *.xml
                    *.txt
                
                conf
            
        
    
        
            
                target/${project.artifactId}-${project.version}.jar
                .
            
        
    
        
            
                false
                runtime
                lib
            
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    id与formats

    formats是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同时定义多个format。
    id则是添加到打包文件名的标识符,用来做后缀。
    也就是说,如果按上面的配置,生成的文件就是 a r t i f a c t I d {artifactId}- artifactId{version}-assembly.tar.gz。

    fileSets/fileSet
    用来设置一组文件在打包时的属性。

    directory:源目录的路径。
    includes/excludes:设定包含或排除哪些文件,支持通配符。
    fileMode:指定该目录下的文件属性,采用Unix八进制描述法,默认值是0644。
    outputDirectory:生成目录的路径。

    files/file
    与fileSets大致相同,不过是指定单个文件,并且还可以通过destName属性来设置与源文件不同的名称。
    dependencySets/dependencySet
    用来设置工程依赖文件在打包时的属性。也与fileSets大致相同,不过还有两个特殊的配置:

    unpack:布尔值,false表示将依赖以原来的JAR形式打包,true则表示将依赖解成*.class文件的目录结构打包。
    scope:表示符合哪个作用范围的依赖会被打包进去。compile与provided都不用管,一般是写runtime。

    按照以上配置打包好后,将.tar.gz文件上传到服务器,解压之后就会得到bin、conf、lib等规范化的目录结构,十分方便。

    参考
    https://www.jianshu.com/p/e581fff1cf87
    https://cloud.tencent.com/developer/article/1354070

  • 相关阅读:
    日本岛津电子天平UW UX 系列series 精密电子天平Shimadzu使用说明
    5. SAP ABAP OData 服务如何支持 $filter (过滤)操作
    MYSQL——二、理论基础
    训练一个神经网络要多久,神经网络训练时间过长
    Linux下安装python 2.7
    云原生|kubernetes|kubeadm部署高可用集群(二)---kube-apiserver高可用+etcd外部集群
    使用词袋模型(BoW)测试提取图像的特征点和聚类中心
    SpringBoot Actuator监控组件笔记
    初刷leetcode题目(3)——数据结构与算法
    Chapter 13 贝叶斯网络实践
  • 原文地址:https://blog.csdn.net/m0_67393295/article/details/126435202