目录
问题描述
解决方案
依赖本地包
打包工具包
参考文献
问题描述
最近做一个项目,打包发布的时候需要在客户提供的云桌面环境进行开发和打包,而客户的云桌面环境不能连外网,这样就不能使用我们的maven私服,不过开发的时候又想使用我们自己的私服上的一些plugin工具,最直观的办法就是把我们自己私服上的jar拷贝到云桌面上的客户的私服上,但是不幸的是,我们无法对云桌面上的maven私服进行管理,因此只能尝试将相关jar以本地包的方式引入进来。
解决方案 依赖本地包(1)将对应的plugin-cache包down到本地,然后放到工程的lib目录下,然后修改工程的pom,添加如下依赖:
com.ohaotian.plugin plugin-cache2.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-plugincom.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 UTF-8
然后点击Plugins--->assembly--->assembly:assembly进行打包
打包后效果如下:
参考文献【1】springboot引入外部jar包并打包jar包
【2】Maven构建可执行的jar包(包含依赖jar包)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)