使用maven-assembly-plugin插件,将maven管理的远程和本地依赖jar包打入可执行jar包

最近在修改一个小工具,原来的做法是把依赖包都下载到本地目录,打包时候使用fatjar打包整个项目依赖;现在修改为maven管理依赖包,使用maven-assembly-plugin插件打包;如果依赖包全部是远程默认的依赖配置,这样没有问题;但里面有些是自己实现的本地依赖,这个时候打包就有问题了;因为本地依赖包scope配置为system,而默认的配置为runtime,所以本地依赖包没有打进去

处理方案:使用自定义配置替代maven-assembly-plugin的默认配置

默认配置:

            
                maven-assembly-plugin
                
                    
                        
                            主程序入口方法
                        
                        
                            .
                        
                    
                    
                        jar-with-dependencies
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
            

这里我们主要修改如下配置:

                    
                        jar-with-dependencies
                    

将这一段去掉,新增自定义配置文件 assembly.xml

修改配置如下:

            
                maven-assembly-plugin
                
                    
                        
                            主程序入口方法
                        
                        
                            .
                        
                    
                    
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                        
                        
                            
                            
                                src/assembly/assembly.xml
                            
                        
                    
                
            
assembly.xml 文件配置如下:

    jar-with-dependencies
    
        jar
    
    false
    
        
        
            /
            true
            true
            runtime
        
        
        
            /
            true
            true
            system
        
    

可以看到,主要增加了scope类型为system的配置;这样在打包的时候,就会把本地jar也打包进去

当然默认的配置也是可以使用的,这个时候可以把本地依赖上传到maven仓库;然后将dependency中路径和scope配置去掉;这样就可以使用默认配置进行打包,可以实现以上同样效果

完整的pom.xml中 build配置:

    
        src
        
            
                true
                src/resources
                
                    *.*
                
            
        

        
            
                org.apache.maven.plugins
                maven-dependency-plugin
                
                    
                        copy-dependencies
                        package
                        
                            copy-dependencies
                        
                        
                            ${project.build.directory}/lib
                            false
                            false
                            true
                        
                    
                
            
            
                maven-assembly-plugin
                
                    
                        
                            com.quan.simple.IncFrame
                        
                        
                            .
                        
                    
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                        
                            
                                src/assembly/assembly.xml
                            
                        
                    
                
            

        
    

本文参考链接:

https://blog.csdn.net/yingkongshi99/article/details/51590835

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

你可能感兴趣的:(maven,maven)