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

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

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

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

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

官方地址:后端

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

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

  • spring-boot:run

能够不用打包,直接运行 Spring Boot 应用。架构

  • spring-boot:repackage

能够打成可执行的运行包(*.jar/*.war)jvm

  • spring-boot:start/ spring-boot:stop

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

  • spring-boot:build-info

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

如何使用

下面主要讲一下前面两种 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>

一、直接运行 Spring Boot 应用

在 Maven 命令行使用:

mvn spring-boot:run

若是在 IDE 开发工具中,能够省去 mvn 命令:

固然,咱们能够直接运行 main class,但使用 Maven 插件能够有更多的功能特性,好比:切换不一样环境配置(Profile), 资源替换 Maven Resource 插件的结合使用。

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

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

你也还能够指定其余参数:

  • systemPropertyVariables:系统属性变量
  • environmentVariables:环境变量

除此以外,其余 JVM 参数,均可以在命令后面指定。

二、打成可执行包

来看一个完整示例:

<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,我以前也分享过一系列核心教程。

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

推荐去个人博客阅读更多:

1.Java JVM、集合、多线程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架构、阿里巴巴等大厂最新面试题

以为不错,别忘了点赞+转发哦!

相关文章
相关标签/搜索