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

maven中使用assembly打包

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

maven中使用assembly打包

借助assembly打可执行jar包

文章目录

借助assembly打可执行jar包前言一、idea引入assembly依赖二、添加assembly.xml配置文件三、打包总结


前言

最近在做的一个功能需要将单java文件(main方法)打成可执行的jar包,进行部署调用,从网上搜集了一些相关的内容,在实现过程中也踩了一些坑,特此记录一下,做个备份。


一、idea引入assembly依赖
            
                org.apache.maven.plugins
                maven-assembly-plugin
                3.0.0
                
                    
                        make-assembly
                        package
                        
                            
                            single
                        
                        
                            
                                
                                 
                                  com.xxx.MainClass
                                
                            
                            
                            ProjectName
                            
                            	
                                src/main/assembly/assembly.xml
                            
                        
                    
                
            
二、添加assembly.xml配置文件
 我是在src/main目录下新建assembly文件夹,在文件夹下添加assembly.xml文件,文件用于指定assembly
插件的一些参数,比如包的类型,jar、zip、war,以及生成的包内包含的文件所在目录等等 直接上配置:

    dep
    
        
        jar
    
    false
    
        
            src/main/java
            /
            0644
        
        
            src/main/resources
            /
            0644
        
        
            ${profile.dir}
            /
            
            
                *.xml
                *.properties
                ***.properties
            
            0644
        
        
            ${project.basedir}/target/classes/
            /
            
                *.class
                *.xml
                *.properties
                *.yaml
            
        

    
    
        
            /
            true
            true
            runtime
        
        
            /
            true
            true
            system
        
        
            lib
        
    

字段含义
fileSet用于指定包内包含文件所在的路径,需要将class文件和模板文件打到jar包中,所以需要指定resources和classes所在的路径
dependencySetdependencySet可将项目的依赖打入jar包中,unpack为true,表示将依赖的jar包解成.class文件,false表示使用依赖的jar包形式
outputDirectory依赖的路径
三、打包

执行maven命令进行打包 mvn clean package ,由于pom文件中phase配置将插件运行绑定到package命令,所以执行package命令时会将assembly的包一起打出来。最后jar包的命名为{finalName}-{assembly.xml中id}.jar

总结

在开始使用的时候,打包可以成功,但是执行java -jar的时候会报出

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ParseException

的错误,经过调试,发现是jar包中没有main方法的依赖文件,后来增加assembly.xml中增加dependencySet属性,会将main的依赖解出.class文件,才可以运行。

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

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

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