企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 81.1 创建可部署的war文件 产生一个可部署war包的第一步是提供一个`SpringBootServletInitializer`子类,并覆盖它的`configure`方法,这充分利用了Spring框架对Servlet 3.0的支持,并允许你在应用通过servlet容器启动时配置它。通常,你只需把应用的主类改为继承`SpringBootServletInitializer`即可: ```java @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); } } ``` 下一步是更新你的构建配置,这样你的项目将产生一个war包而不是jar包。如果你使用Maven,并使用`spring-boot-starter-parent`(为了配置Maven的war插件),所有你需要做的就是更改`pom.xml`的打包方式为`war`: ```xml <packaging>war</packaging> ``` 如果你使用Gradle,你需要修改`build.gradle`来将war插件应用到项目上: ```gradle apply plugin: 'war' ``` 该过程最后的一步是确保内嵌的servlet容器不能干扰war包将部署的servlet容器。为了达到这个目的,你需要将内嵌容器的依赖标记为`provided`。 如果使用Maven: ```xml <dependencies> <!-- … --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- … --> </dependencies> ``` 如果使用Gradle: ```gradle dependencies { // … providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' // … } ``` 如果你使用[Spring Boot构建工具](333293),将内嵌容器依赖标记为`provided`将产生一个可执行war包,在`lib-provided`目录有该war包的`provided`依赖。这意味着,除了部署到servlet容器,你还可以通过使用命令行`java -jar`命令来运行应用。 **注** 查看Spring Boot基于以上配置的一个[Maven示例应用](http://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-traditional/pom.xml)。