maven实战-源码和依赖分离


源码和依赖分离

博主在接触一个新项目的时候,发现这个项目打包出来的jar包非常的小,这样在替换测试环境的jar包时就会显得十分有优势。通过查看pom文件得知,原来这个项目用到了maven-dependency-plugin和maven-jar-plugin俩个maven插件。

实现逻辑

我们的目的是实现源码和依赖分离,也就是在打包的时候需要将源码和依赖分开,这时候我们需要先借助maven-dependency-plugin插件在打包前将依赖复制到一个路径a,然后打包的时候指定classpath就是我们之前复制的路径a。

maven-dependency-plugin

maven-dependency-plugin插件跟我们项目中的依赖有关,我们可以通过这个插件来分析依赖关系,拷贝依赖关系,解压依赖文件。

详细配置

phase是maven生命周期中的某个时机,这里是prepare-package,也就是准备打包的时候。goal就是插件的目标,也就是我们希望插件来帮我们完成什么事情。maven-dependency-plugin的goal非常多,博主这里使用的是copy-dependencies,插件的详细配置如下所示:


    org.apache.maven.plugins
    maven-dependency-plugin
    
        
            copy-dependencies
			
                ${project.build.directory}/bin/lib
                false
                false
				
                true
            
        
    

maven-jar-plugin

maven-jar-plugins是打用来打jar包的插件,我们可以设定 META-INF/MAINFEST .MF文件的参数,比如mainClass主类的位置,是否添加classpath路径,classpath路径的前缀等属性。

详细配置


    org.apache.maven.plugins
    maven-jar-plugin
    
        
            
				
                true
				
                lib/
				
                com.Application
            
        
		
        
                ${project.build.directory}/bin
        
    

查看实际效果

从下图可以知道,我们的依赖跟源码已经成功分离开来。

实际效果

博主微信公众号