spring -boot-maven-plugin,提到了maven shade plugin。 maven shaded plugin的作用:
- 选择内容,并打包成uber jar
- 将类换个位置。为类重新编码,将类换个位置(包的路径也因此改变)
- attach shaded组件。默认情况将main组件替换成shaded组件,如果两个都需要保留(安装或部署),则可以配置attach shaded组件。
- 打包成可执行jar。只需要指定main类及路径。
- 转换resource(有些resource文件,用到了类及其路径,需要转换)
在阅读上面文字过程中,遇到几个概念。 uber jar 又叫做fat jar和over jar。含义是一个jar文件中,既有自己的代码,也有依赖。可以作为一个独立的依赖提供出去,也可以作为一个web应用运行。 shaded jar 又叫做renamed jar。uber jar在作为依赖提供出去的时候,使用方有同名依赖(可能版本不同),这时就会有冲突的可能性,因此在打包成uber jar时,将这些依赖重命名。maven shade plugin的做法是,重新编码类文件,包括自己的类和依赖的类。这样做也容易带来问题,因此在elastic的jar高版本时,不再对它的依赖重命名了(这些被重命名的依赖,就是shaded dependencies) artifact 直译是"工件"。将一组组件打包成集合实现一定的功能。例如编译的Java类的集合或打包在Java包中的Java应用程序、作为目录结构的Web应用程序或Web应用程序存档,等等。
详见: https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/ https://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.html https://softwareengineering.stackexchange.com/questions/297276/what-is-a-shaded-java-dependency https://www.jetbrains.com/help/idea/working-with-artifacts.html
|