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