SpringBoot 項目構建與部署

Spring Boot 項目可以內嵌 Servlet 容器,因此部署極爲方便,可直接打成可執行 JAR 包部署在有 Java 運行環境的服務器上,也可以像傳統的 Java Web 應用程序那樣打成 WAR 包運行。

JAR

使用 spring-boot-maven-plugin 插件可以創建一個可執行的 JAR 應用程序,前提是應用程序的 parent 爲 spring-boot-starter-parent。配置方式如下:

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

配置完成後,在當前項目的根目錄下執行如下 Maven 命令進行打包:

mvn package

或者在 IntelliJ IDEA 中單擊 Maven Project ,找到 Lifecycle 中的 package 雙擊打包。

打包成功後,在當前項目的根目錄下找到 target 目錄, target 目錄中就有剛剛打成的 JAR 包:

boot-0.0.1-SNAPSHOT.jar

這種打包方式的前提是項目使用了 spring-boot-starter-parent 作爲 parent,在大部分項目中,項目的 parent 可能並不是 spring-boot-starter-parent ,而是公司內部定義好的一個配置 ,此時 spring-boot-maven-plugin 插件並不能直接使用,需要多做一些額外配置 :

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.2.4.RELEASE</version>
    <executions>
        <execution>
            <goals>
            	<goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

配置完成後,就可以通過 Maven 命令或者 IntelliJ IDEA 中的 Maven 插件進行打包,打包方式和前文一致。

運行:

java -jar boot-0.0.1-SNAPSHOT.jar & 

注意,最後面的 & 表示讓項目在後臺運行。由於在生產環境中,Linux 大多數情況下都是遠程服務器,開發者通過遠程工具連接 Linux ,如果使用上面的命令啓動 JAR,一旦窗口關閉, JAR 就停止運行了,因此一般通過如下命令啓動 JAR:

nohup java -jar boot-0.0.1-SNAPSHOT.jar & 

這裏 nohup 表示當窗口關閉時服務不掛起,繼續在後臺運行。

WAR

在一些特殊情況下需要開發者將 Spring Boot 項目打成 WAR 包,然後使用傳統的方式部署, 步驟如下:

修改 pom.xml 文件:

<package>war</package>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

提供 SpringBootServletInitializer 的子類,並覆蓋其 configure 方法完成初始化操作,代碼如下:

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import xyz.ther.boot.BootApplication;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder app) {
        return app.sources(BootApplication.class);
    }
}

經過以上配置後,接下來就可以對項目進行打包了。打包的方式和打 JAR 包的方式是一樣的,打包成功後在 target 目錄下生成一個 WAR 包,將該文件複製到 Tomcat 的 webapps 目錄下,啓動 Tomcat 即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章