jar分类
- jar: 用于给java project依赖的jar包,无法单独执行
- excutable jar: 比普通jar多了一个main类的指定,在jar包里,META-INF/MANIFEST.MF文件里,有一行是指定main class的配置
Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.3.0
Build-Jdk-Spec: 21
Main-Class: org.example.DemoApp
- shade jar: 把所有的依赖包jar按类的目录进行解压平铺,相同的package在同一目录下,然后再与工程的class打成一个大jar包,是fat jar的一种形式
- uber jar: 把工程classes、依赖jar、resources、static、全部打进一个jar包里,称为uber jar,spring boot正是这种默认打包方式,也是fat jar
maven-shade-plugin
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.example.DemoApp</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
执行mvn clean package后,就可以看到target目录下一个size很大的jar包
执行shade jar
与spring boot打出的fat jar一样,不用再指定classpath依赖包了,直接单文件搞定:
java -jar your-app.jar
标签:package,plugin,jar,maven,shade,org
From: https://www.cnblogs.com/jiayuan2006/p/18368305