首先 啟動(dòng)類(lèi) 需要繼承 SpringBootServletInitializer類(lèi),并且需要重寫(xiě) configure 方法,例如:
@SpringBootApplication
public class FirstSpringbootApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(FirstSpringbootApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(FirstSpringbootApplication.class);
}
}
其次將maven配置文件pom.xml中的 packaging 修改為 war,并且添加springboot打包插件
...
<groupId>com.demo</groupId>
<artifactId>first-app</artifactId>
<version>0.0.1</version>
<name>first-app</name>
<packaging>war</packaging>
<description>demo</description>
...
<build>
<finalName>first-app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 表示引入依賴scope為system的jar,但是只有這項(xiàng)的話,打war包后,
jar會(huì)被放在WEB-INF/lib-provided 必須加入下面的maven-war-plugins插件,才會(huì)將jar放入WEB-INF/lib -->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<!-- 下面的插件主要是為了在打包時(shí)引入項(xiàng)目?jī)?nèi)部已有的jar,
并且打包后會(huì)輸出到 targetPath 指定的地址下,targetPath是項(xiàng)目根路徑的相對(duì)地址,
${project.basedir}表示的是項(xiàng)目根路徑,如果你的jar放在src/main/resources下,
應(yīng)該改為 ${project.basedir}/src/main/resources/xxxxx -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<webResources>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>WEB-INF/lib</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
使用mvn clean package -Dmaven.test.skip=true打包即可