maven-plugin-shade 是 Maven 的一个插件,它的作用是将多个 jar 包合并成一个 jar,同时将其中的依赖关系也合并到该 jar 中。这个插件常用于创建可执行 jar 包和打包 web 应用程序。
下面是 maven-plugin-shade 的一些常用配置:
打包的形式:可以设置打包成一个可执行的 jar 包或者一个普通的 jar 包。
排除依赖:可以设置排除某些依赖,避免重复打包。
过滤资源:可以通过配置来过滤掉一些不需要打包的资源。
重新定位依赖:如果合并后的依赖不能与原来的 jar 包兼容,可以通过重新定位的方式来解决。
转换类文件:可以对 class 文件进行转换,比如修改包名或类名等。
使用 maven-plugin-shade 打包 jar 包的步骤如下:
在 pom.xml 文件中添加 maven-shade-plugin 插件。
配置要合并的 jar 包以及排除的依赖、过滤资源等信息。
运行 Maven 命令进行打包。
示例:
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-shade-pluginartifactId>
- <version>3.2.1version>
- <configuration>
- <createDependencyReducedPom>truecreateDependencyReducedPom>
- <shadedArtifactAttached>trueshadedArtifactAttached>
- <shadedClassifierName>executableshadedClassifierName>
- <transformers>
- <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>${mainClass}mainClass>
- transformer>
- transformers>
- <filters>
- <filter>
- <artifact>*:*artifact>
- <excludes>
- <exclude>META-INF/*.SFexclude>
- <exclude>META-INF/*.DSAexclude>
- <exclude>META-INF/*.RSAexclude>
- excludes>
- filter>
- filters>
- configuration>
- plugin>
- plugins>
- build>
在配置中,我们设置了要创建一个可执行的 jar 包,并指定了 mainClass。同时,我们设置了过滤规则,排除了一些不需要打包的文件。
运行 Maven 命令 mvn package 进行打包,就会在 target 目录下生成一个可执行的 jar 包。