Maven项目依赖本地包及如何打包工具包

目录

问题描述

解决方案

依赖本地包

打包工具包

 参考文献


问题描述

       最近做一个项目,打包发布的时候需要在客户提供的云桌面环境进行开发和打包,而客户的云桌面环境不能连外网,这样就不能使用我们的maven私服,不过开发的时候又想使用我们自己的私服上的一些plugin工具,最直观的办法就是把我们自己私服上的jar拷贝到云桌面上的客户的私服上,但是不幸的是,我们无法对云桌面上的maven私服进行管理,因此只能尝试将相关jar以本地包的方式引入进来。

解决方案

依赖本地包

(1)将对应的plugin-cache包down到本地,然后放到工程的lib目录下,然后修改工程的pom,添加如下依赖:


    com.ohaotian.plugin
    plugin-cache
    2.0.1-multi-8
    system
    ${project.basedir}/src/main/resources/lib/plugin-cache-2.0.1-multi-8.jar

(2)修改打包时候的配置,添加iincludeSystemScope的配置项,以SpringBoot打包为例,如下:

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                
                    com.jingu.Application
                    true
                
                
                    
                        
                            repackage
                        
                    
                
            
        
    

       按照如上方式可以正常将本地包依赖进来,并打包成功。但是,但是运行的时候,会出现ClassNotFound的错误,说找不到对应的类,仔细看的话会发现,找不到的都是这个jar里面再依赖的jar。 因为这个plug-cache工具类本身也是一个mavne工程,它内部还依赖了其他的依赖。但是通过这种本地方式依赖进来的包,依赖传递失效了。或者说,pom里配置本地jar的这种方式常规都是依赖的完整的工具jar,也就是所有的依赖都打到这个jar中才对。

打包工具包

       如何将一个maven工具包打包,将所有的依赖都打包进去?这要使用maven-assemble-plugin这个插件。修改plugin-cache工程对应的pom,如下所示:

   
        
            
                maven-assembly-plugin
                
                    
                        jar-with-dependencies
                    
                
            
            
                maven-compiler-plugin
                
                    1.8
                    1.8
                    UTF-8
                
            
        
    

       然后点击Plugins--->assembly--->assembly:assembly进行打包

Maven项目依赖本地包及如何打包工具包_第1张图片

       打包后效果如下:

Maven项目依赖本地包及如何打包工具包_第2张图片

 参考文献

【1】springboot引入外部jar包并打包jar包

【2】Maven构建可执行的jar包(包含依赖jar包)

你可能感兴趣的:(前端,Java,maven,jar,java)