栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven的三种打包方式(jar、shade、assembly)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven的三种打包方式(jar、shade、assembly)

文章目录

01 引言02 assembly打包

2.1 介绍2.2 使用2.3 字段解析 03 jar打包

3.1 介绍3.2 使用3.3 字段解析 04 shade打包

4.1 介绍4.2 使用4.3 字段解析 05 文末

01 引言

Maven有三种打包方式,分别为:

assembly:自定义的打包结构,也可以定制依赖项等;jar:默认的打包方式,用来打普通的project JAR包;shade:用来打可执行jar包,也就是所谓的fat JAR包。

下面来讲解下这三种的打包方式。

02 assembly打包 2.1 介绍

插件:使用maven-assembly-plugin插件 。

我们日常使用比较多的是maven-assembly-plugin插件,例如:大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化。

2.2 使用

首先在pom文件添加以下内容:


    
        
            org.apache.maven.plugins
            maven-assembly-plugin
            ${maven-assembly-plugin.version}
            
                
                    make-assembly
                    
                    package
                    
                        
                        single
                    
                
            
            
                
                src/main/assembly/assembly.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
        
    


2.3 字段解析
字段解析
formats是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同时定义多个forma
id是添加到打包文件名的标识符,用来做后缀。也就是说,如果按上面的配置,生成的文件就是artifactId − {artifactId}-artifactId−{version}-assembly.tar.gz
fileSets/fileSet用来设置一组文件在打包时的属性
directory源目录的路径
includes/excludes设定包含或排除哪些文件,支持通配符
fileMode指定该目录下的文件属性,采用Unix八进制描述法,默认值是064
outputDirectory生成目录的路径
files/file与fileSets大致相同,不过是指定单个文件,并且还可以通过destName属性来设置与源文件不同的名称
dependencySets/dependencySet用来设置工程依赖文件在打包时的属性,也与fileSets大致相同
dependencySet-unpack布尔值,false表示将依赖以原来的JAR形式打包,true则表示将依赖解成*.class文件的目录结构打包
dependencySet-scope表示符合哪个作用范围的依赖会被打包进去。compile与provided都不用管,一般是写runtime

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

03 jar打包 3.1 介绍

插件:使用maven-jar-plugin插件

默认的打包方式,用来打普通的project JAR包

3.2 使用

   
       
            org.apache.maven.plugins
            maven-jar-plugin
            3.1.0
            
                
                    
                                                     com.xx.main.HelloMavenJar
                        
                        true
                        
                        lib/
                    
                
                
                com/xx/excludes/*
            
        
    

3.3 字段解析

上面3.2的配置使用这个 jar包的时候就需要在它同一级的创建一个lib目录来存放。

可以使用includes或excludes选择的打包某些内容。

04 shade打包 4.1 介绍

插件:使用maven-shade-plugin插件

maven-shade-plugin提供了两大基本功能:

将依赖的jar包打包到当前jar包(常规打包是不会将所依赖jar包打进来的);对依赖的jar包进行重命名(用于类的隔离); 4.2 使用


  
    
      org.apache.maven.plugins
      maven-shade-plugin
      3.1.1
      
        
      
      
        
          package
          
            shade
          
        
      
    
  

4.3 字段解析

参考:https://blog.csdn.net/yangguosb/article/details/80619481

可以使用excludes排除部分jar包,例如:


  jmock:*
  *:xml-apis
  org.apache.maven:lib:tests
  log4j:log4j:jar:

将依赖jar包内部资源添加或排除,例如:


  meta-INF/*.SF
  meta-INF/*.DSA
  meta-INF/*.RSA

自动将所有不使用的类排除,例如:


  true

将依赖的类重命名并打包进来 (隔离方案),例如将“org.codehaus.plexus.util”重命名为“org.shaded.plexus.util":


  
    org.codehaus.plexus.util
    org.shaded.plexus.util
    
      org.codehaus.plexus.util.xml.Xpp3Dom
      org.codehaus.plexus.util.xml.pull.*
    
  

修改包的后缀名:


   true
   jackofall 
 
05 文末

具体细节可以参考:

shade打包官方教程:https://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.html;jar打包官方教程: https://maven.apache.org/shared/maven-archiver/examples/classpath.html;assembly打包官方教程:https://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号