maven shade
- 用来创建超级JAR包的插件
- 理由:一个java程序要想运行必须有main函数,一般一个java程序会有其它依赖包,通过将程序打包成jar形式来运行的话,那么就需要将其所有依赖也打包进来才能够正常运行,否则运行就会因为缺少依赖而失败。shade插件就是用来将程序和所有依赖打包成一个超级(uber) JAR。
- 只会将compile范围依赖进行打包。
- 类似的还有assembly插件(打包成组合jar)
案例
- 使用shade插件在package阶段将项目打包成一个超级jar包,并且配置了mainClass信息。运行
mvn clean package
命令会得到一个jar包,通过java -jar xxxx.jar
来运行程序.
<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>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.zlcook.studymvn.helloword.HelloWord</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
- 打包成一个超级Jar包,但是没有配置main函数所在类,所以不可以通过java -jar xxxx.jar命令来运行程序。
<project>
...
<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>
</execution>
</executions>
</plugin>
<plugins>
<build>
<project>