使用Maven Assembly plugin将依赖打包进jar

一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar。以前采用fatjar进行打包,但是fatjar有不少问题,

1. 最近一次更新是在09年,无法支持新版本的eclipse。

2.支持最高的jdk版本是1.7  

3. 打包速度慢(不是一般的慢)

4. 打成的jar包体积略大。

  下面是一个Eclipse的工程,其中含有不少的maven依赖包:

使用Maven Assembly plugin将依赖打包进jar_第1张图片

采用export成runnable jar包的方式是行不通的,正确做法是在工程的pom.xml文件中配置maven-assembly-plugin,pom.xml的配置如下:


    4.0.0

    com.cetc.di
    hdfs
    1.0
    jar

    hdfs
    http://maven.apache.org

    
        UTF-8
        1.8
    

    
        
            
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            

            
                    maven-assembly-plugin 
                   
                        
                             jar-with-dependencies
                        
                        
                             
                                  com.cetc.di.App
                             
                        
                   
                   
                        
                             make-assembly
                             package
                             
                                  single
                             
                        
                   
              
            

        
    

    
        
            log4j
            log4j
            1.2.17
        

        
            junit
            junit
            3.8.1
            test
        

        

            org.springframework.data
            spring-data-hadoop
            2.2.1.RELEASE
        
    

执行maven4MyEclipse->Update Project…

使用Maven Assembly plugin将依赖打包进jar_第2张图片

最后执行Run as->Maven build..->Select..->选择package目标。

使用Maven Assembly plugin将依赖打包进jar_第3张图片

目标执行后,可以在target目录下,找到生成的jar包:

使用Maven Assembly plugin将依赖打包进jar_第4张图片

使用Java Decompiler可以看到打包后,jar包的内容如下:

使用Maven Assembly plugin将依赖打包进jar_第5张图片




你可能感兴趣的:(maven)