玩轉spring boot——war部署


前言


 

之前部署spring boot應用是通過直接輸入命令“java -jar”來實現的。而有些情況,由於部署環境的制約,只能把項目從jar轉換成war才能部署,如新浪雲sae的java環境容器。那怎樣轉換成war項目呢? 其實非常簡單,只需要App類繼承SpringBootServletInitializer,並重寫“protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)” 方法即可

package com.github.carter659.spring10;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

/**
 * 博客出處:http://www.cnblogs.com/GoodHelper/
 * 
 * @author 劉冬
 *
 */
@SpringBootApplication
public class App extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // TODO Auto-generated method stub
        // return super.configure(builder);
        return builder.sources(App.class);
    }
}

 

修改pom.xml,把<packaging>jar</packaging>修改為<packaging>war</packaging>

並增加如下maven依賴:

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

因為spring boot默認會嵌入tomcat。

 完整的pom.xml為:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.github.carter659</groupId>
    <artifactId>spring10</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
    </parent>

    <name>spring10</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

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

 

其他代碼,“MainController.java”和“index.html”:

package com.github.carter659.spring10;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * 博客出處:http://www.cnblogs.com/GoodHelper/
 * 
 * @author 劉冬
 *
 */
@Controller
public class MainController {

    @GetMapping("/")
    public String index() {
        return "index";
    }
}
MainController
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>玩轉spring boot——war部署</title>
</head>
<body>
    <h1>玩轉spring boot——war部署</h1>
    <h4>
        <a href="http://www.cnblogs.com/GoodHelper/">from 劉冬的博客
            http://www.cnblogs.com/GoodHelper/</a>
    </h4>
    <br /> 你好,war
    <br />
    <a href="http://www.cnblogs.com/GoodHelper/">點擊訪問原版博客</a>
</body>
</html>
index.html

 

最后進入項目的src目錄,執行mvn package命令,生成war包。

 

 一、本地tomcat部署


 

把剛才生成的spring10.war復制到tomcat的webapps目錄

 

運行setup.bat

啟動tomcat

 

運行效果為:

 二、新浪雲sae的tomcat部署


 

進入新浪雲sae的控制台,創建新應用

 

 

選擇java雲容器

 

在代碼管理菜單中,上傳war包

 

在日志管理中能看到spring boot的啟動日志:

 

啟動完畢后,輸入網址就能訪問之前部署的項目了:

總結


 

以上是新浪雲sae部署的全過程。新浪雲部署項目非常簡單,非常適合人員緊張的小微創業公司。

在后面的博客中,我還會逐步介紹新浪雲自帶的持續集成,而持續集成是使用git或svn提交代碼后自動構建應用版本,而今天的項目部署只是一個小小的前奏。

 

代碼:https://github.com/carter659/spring-boot-10.git

 

如果你覺得我的博客對你有幫助,可以給我點兒打賞,左側微信,右側支付寶。

有可能就是你的一點打賞會讓我的博客寫的更好:)

 

返回玩轉spring boot系列目錄

參考:http://spring.io/guides/gs/convert-jar-to-war/

 


免責聲明!

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



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