使用maven-shade-plugin打包shade jar

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
posted @   漠孤烟  阅读(183)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示