本文所使用的 SpringBoot 版本:1.5.19.RELEASE
java 版本:1.8
tomcat版本:7.0.91
一、jar包
pom.xml
<groupId>com.weimo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>jar包部署</description>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<finalName>demo</finalName>
</configuration>
</plugin>
</plugins>
</build>
SpringBoot 打成 jar 包,内嵌了自带的 tomcat 配置,可以直接执行 java -jar *.jar 的命令运行。该命令只是启动一个执行 jar mian 的 jvm 进程,当 spring-boot-starter-web 包含嵌入式 tomcat 服务器依赖项时,执行 java -jar 则会启动 Application Server。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
二、war包
pom.xml
<groupId>com.weimo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>war包部署</description>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<finalName>demo</finalName>
</configuration>
</plugin>
</plugins>
</build>
将 war 包放在 tomcat/webapps 目录下,这种方式会使用到外部的 tomcat,如果这样启动之后 tomcat 报错:
java.util.zip.ZipException: error in opening zip file
...
org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
此时还需要在 Application 类继承 SpringBootServletInitializer,这个类是 servlet 的初始化组件。
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
// 不重写此方法也可以启动成功
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
System.out.println("启动完成");
}
}