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


棧長在之前的文章分享過關於 Spring Boot 打包運行的兩篇文章:

不過一直沒機會對 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 命令:

當然,我們可以直接運行 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,我之前也分享過一系列核心教程。

好了,今天的分享就到這里了,更多使用的方法大家都可以官方學習,覺得本文不錯別忘了點個在看和轉發哦!

推薦去我的博客閱讀更多:

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

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

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

4.Java、后端、架構、阿里巴巴等大廠最新面試題

覺得不錯,別忘了點贊+轉發哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM