最近,在用springboot开发一个小应用,springboot默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包而不是jar格式的包。接下来就开始吧!

1、首先将pom.xml将打包方式改成war

<packaging>war</packaging>

2、新增依赖

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

这个依赖打war包时加入, 告诉spring-boot tomcat相关jar包用外部的,不要打进去。

3、将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

4、使用maven插件进行打包。

在pom.xml中的project 下新增:

<build>
    <finalName>springboot</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

使用eclipse,Run As->Maven Build… , Goals 中输入clean package,即可打包。然后将war包放入Tomcat的webapps目录下,启动tomcat,即可完成自动解压部署。

在开发环境和部署到生产的时候,jdk和tomcat版本最好要一致,比如jdk1.8,tomcat也要8,否则,开发测试时时ok的,但部署到生产就可能出现各种问题。