spring_reference/IX. ‘How-to’ guides/74.1. Create a deployable w...

52 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 74.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的packaging为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构建工具](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#build-tool-plugins)将内嵌容器依赖标记为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)。