maven-shade-plugin入门指南
有时候,需要将复杂的项目,包括各种xml文件属性文件, 类, jar等等打包到一个可以执行的jar包中, 然后用java -jar xxx.jar 来运行项目,这样简单方便,特别是在编写一些测试工具时,尤为重要。
但是经常发现打包后的项目无法启动, 其中一大类是您项目有问题, 但是这个相对好解决。
通过 maven-shade-plugin 生成的jar包,它包含所有的依赖 jar 包。
使用
配置 maven-shade-plugin
maven-shade-plugin 将 goal shade:shade 绑定到 phase package 上。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<!-- put your configurations here -->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
执行命令:mvn clean package
例子
将该工程依赖的部分 Jar(fastjson) 包 include/exclude 掉。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<artifactSet>
<excludes>
<exclude>com.alibaba:fastjson</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
configuration的层级问题
maven-shade-plugin 自动将所有不使用的类全部排除掉,将 uber-jar 最小化。
<configuration>
<minimizeJar>true</minimizeJar>
</configuration>
默认会生成一个Jar包和一个以 “original-”为前缀的original-jar包,可以通过配置来指定original-jar的后缀名。
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<!-- 名称会作为后缀在shade构件jar包后 -->
<shadedClassifierName>jackofall</shadedClassifierName>
</configuration>
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!