阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

打包Spring Boot应用

23次阅读
没有评论

共计 1359 个字符,预计需要花费 4 分钟才能阅读完成。

我们在 Maven 的使用插件一节中介绍了如何使用 maven-shade-plugin 打包一个可执行的 jar 包。在 Spring Boot 应用中,打包更加简单,因为 Spring Boot 自带一个更简单的 spring-boot-maven-plugin 插件用来打包,我们只需要在 pom.xml 中加入以下配置:

<project ...>
    ...
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

无需任何配置,Spring Boot 的这款插件会自动定位应用程序的入口 Class,我们执行以下 Maven 命令即可打包:

$ mvn clean package

springboot-exec-jar 项目为例,打包后我们在 target 目录下可以看到两个 jar 文件:

$ ls
classes
generated-sources
maven-archiver
maven-status
springboot-exec-jar-1.0-SNAPSHOT.jar
springboot-exec-jar-1.0-SNAPSHOT.jar.original

其中,springboot-exec-jar-1.0-SNAPSHOT.jar.original是 Maven 标准打包插件打的 jar 包,它只包含我们自己的 Class,不包含依赖,而 springboot-exec-jar-1.0-SNAPSHOT.jar 是 Spring Boot 打包插件创建的包含依赖的 jar,可以直接运行:

$ java -jar springboot-exec-jar-1.0-SNAPSHOT.jar

这样,部署一个 Spring Boot 应用就非常简单,无需预装任何服务器,只需要上传 jar 包即可。

在打包的时候,因为打包后的 Spring Boot 应用不会被修改,因此,默认情况下,spring-boot-devtools这个依赖不会被打包进去。但是要注意,使用早期的 Spring Boot 版本时,需要配置一下才能排除 spring-boot-devtools 这个依赖:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludeDevtools>true</excludeDevtools>
    </configuration>
</plugin>

如果不喜欢默认的项目名 + 版本号作为文件名,可以加一个配置指定文件名:

<project ...>
    ...
    <build>
        <finalName>awesome-app</finalName>
        ...
    </build>
</project>

这样打包后的文件名就是awesome-app.jar

练习

使用 Spring Boot 插件打包可执行 jar。

下载练习

小结

Spring Boot 提供了一个 Maven 插件用于打包所有依赖到单一 jar 文件,此插件十分易用,无需配置。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-08-05发表,共计1359字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中