本文所使用的 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("啓動完成");
}
}