Maven打包插件之——maven-jar-plugin、maven-assembly-plugin、maven-shade-plugin

1. 打包插件的介绍

      打包插件是把class文件,配置文件打包成一个jar(war或者其他格式)的包。而且可执行jar包中包含或者不包含相应的依赖包包,当不包含相应的依赖包时,我们需要建立lib目录,且jar和lib目录在同级别目录。

2. 常见的打包插件

      2.1 maven-jar-plugin

            可执行jar包与依赖包是分开的,需要建立lib目录来存放所需的依赖包,且jar包与lib目录在同级别目录中,相应的pom配置如下:

             
                 org.apache.maven.plugins
                 maven-jar-plugin
                 2.6
                 
                    
                         
                             true
                             lib/
                            com.xxx.xxxService
                       
                    
                
            
            
                org.apache.maven.plugins
                maven-dependency-plugin
                2.10
                
                    
                        copy-dependencies
                        package
                        
                            copy-dependencies
                        
                        
                            ${project.build.directory}/lib
                        
                    
                
            

      2.2 maven-assembly-plugin

            该插件会将所有的依赖包放入可执行jar包,但是该插件会缺失spring的xds文件,导致jar包无法运行,而且当同级别目录下还有其他可执行文件依赖可能会产生冲突,相应的pom配置如下:

             
                 maven-assembly-plugin
                 
                     
                         jar-with-dependencies
                     
                     
                         
                             com.xxx.xxxService
                        
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
            

      2.3 maven-shade-plugin

            该插件将所有的依赖包放入可执行的jar包中,当同级别目录中有其他的可执行jar包时,依赖可能会产生冲突,且运行jar包时,有时候会出现类似SF,DSA,RSA文件冲突的提示,选哟派相互META-INF目录下的文件,相应pom位置如下:

    
                org.apache.maven.plugins
                maven-shade-plugin
                2.4.3
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    *:*
                                    
                                        META-INF/*.SF
                                        META-INF/*.DSA
                                        META-INF/*.RSA
                                    
                                
                            
                            
                                
                                    META-INF/spring.handlers
                                
                                
                                    META-INF/spring.schemas
                                
                                
                                    META-INF/spring.tooling
                                
                                
                                    com.xxx.xxxInvoke
                                
                            
                            true
                            true
                        
                    
                
            

 

你可能感兴趣的:(maven)