Spring Boot 打包插件,真是太有用了!

简介: 栈长在之前的文章分享过关于 Spring Boot 打包运行的两篇文章:

栈长在之前的文章分享过关于 Spring Boot 打包运行的两篇文章:


运行 Spring Boot 应用的 3 种方式

Spring Boot 怎么打一个可执行 Jar 包?

不过一直没机会对 Spring Boot Maven 插件做详细介绍。


Spring Boot 对 Maven 一直支持很友好,栈长也一直在用 Maven 进行依赖和项目管理,那么今天就讲一下这个插件的作用,非常有用!


有了 Spring Boot Maven Plugin 这个插件,我们可以将项目打成可执行的 jar 包(*.jar)以及 war 包(*.war),可以帮助我们很方便的运行 Spring Boot 应用。


官方地址:


https://docs.spring.io/spring-boot/docs/current/maven-plugin/index.html


主要包括以下几个目标(goals)

spring-boot:run

可以不用打包,直接运行 Spring Boot 应用。


spring-boot:repackage

可以打成可执行的运行包(.jar/\.war)


spring-boot:start/ spring-boot:stop

用于管理 Spring 应用程序的生命周期(例如:用于集成测试)。


spring-boot:build-info

用于生成构建信息,用于 Spring Boot Actuator。


如何使用

下面主要讲一下前面两种 goal 的使用,后面两种用的比较少。


集成 Spring Boot Maven Plugin 插件:

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>2.2.6.RELEASE</version>
    </plugin>
    ...
  </plugins>
  ...
</build>

1、直接运行 Spring Boot 应用

在 Maven 命令行使用:

mvn spring-boot:run

如果在 IDE 开发工具中,可以省去 mvn 命令:

image.png

当然,我们可以直接运行 main class,但使用 Maven 插件可以有更多的功能特性,比如:切换不同环境配置(Profile), 资源替换 Maven Resource 插件的结合使用。


默认情况下,插件运行在一个新进程中,命令行设置的 JVM 参数是不生效的,需要单独指定:


-Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"

你也还可以指定其他参数:


systemPropertyVariables:系统属性变量

environmentVariables:环境变量

除此之外,其他 JVM 参数,都可以在命令后面指定。


2、打成可执行包


来看一个完整示例:

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>2.2.6.RELEASE</version>
      <configuration>
        <mainClass>${start-class}</mainClass>
        <layout>jar</layout>
      </configuration>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
          <configuration>
           <classifier>exec</classifier>
         </configuration>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

以下几个参数都是可选的。


repackage:


最主要的是要添加 repackage goal,用来重新打包。


layout:


layout 属性根据项目类型默认是:jar/war,具体可以设置以下几种:


JAR:可执行 jar 包;

WAR:可执行 war 包;

ZIP(别名:DIR):和 jar 包相似,使用的是:PropertiesLauncher;

NONE:打包所有依赖项和项目资源。不绑定任何启动加载器;

classifier:


默认情况下只会打一个包,但是如果这个模块既是其他模板的依赖,自身又需要打成可执行的运行包,那就需要用这个标签另外指定一个别名包,如:


xxx.jar

xxx-exec-jar

具体参考:


https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/repackage-classifier.html


Spring Boot 打包这个插件经常会用到,大家还是要学会使用它,不然出去面试,面试官一问 Spring Boot 项目如何打包,你就一脸 MB 了。


另外,大家如果对 Maven 不熟悉的可以在公众号Java技术栈后台回复:Maven,我之前也分享过一系列核心教程。


好了,今天的分享就到这里了,更多使用的方法大家都可以官方学习,觉得本文不错别忘了点个在看和转发哦!

目录
相关文章
|
2月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
212 1
|
3天前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
14 1
|
28天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
48 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
49 2
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
27天前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
109 0
|
28天前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
291 0
|
29天前
|
监控 数据可视化 Java
springBoot:actuator&admin 图形可视化&spring 打包 (七)
本文介绍了Spring Boot Actuator及其图形化管理界面Spring Boot Admin的使用方法,包括依赖导入、服务端与客户端配置、以及如何打包为JAR和WAR文件并部署。通过这些步骤,可以实现应用的监控和管理功能。
|
3月前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)