maven打包成minijar
本文演示使用maven的maven-shade-plugin插件实现打包成minijar功能,并解决缺少依赖问题。
maven打包成可执行jar包时需要将依赖的jar包也一同打包到jar包内,最终可能导致得到的可执行jar体积太大,
但是第三方jar的部分class可能是从未使用到的,即使移除也不会影响程序运行,这样可以大大减少打包的体积。
插件maven-shade-plugin为我们提供了这样的功能,他会自动分析jar包内的依赖,将不需要的class移除。
1 | |
上面配置插件,并挂钩到package步骤中,执行shade。配置minimizeJar为true即可。
部分依赖问题
上面很简单能实现minijar,但是插件在分析依赖时不能分析到反射获取的类,这会导致程序运行时反射获取类失败,所以需要手动处理这样的类。
下面我们在使用logback时,因为配置是写在配置文件里的,所以部分类会被插件丢弃掉导致class Not Find。
可以配置filter节点手动包含类,规则是。
1 | |
示例,包含logback-core的所有类:
1 | |
要注意的一点是,如果配置了filter,该artifact就不会自动处理依赖了,插件只包含include内手动指定的类,没指定的全部不会包含。我这里使用了** 表示全部包含进来。
maven打包成minijar
https://www.huangchaoyu.com/3106064082.html