SpringBoot打包war

本文介绍了如何在SpringBoot项目中排除内置的Tomcat服务器,添加Servlet依赖,并设置Maven构建配置以定制WAR包,以及使用SpringBootServletInitializer实现启动类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pom.xml

#排除内嵌的tomcat 
   <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!--添加servlet的依赖-->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>



#设置打包,并定义war的名字
<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>3.3.0</version>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
					<warName>weibo_show</warName>
				</configuration>

			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>8</source>
					<target>8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

启动类 extends SpringBootServletInitializer

@SpringBootApplication
@MapperScan("com.wg.mapper.*")
public class WeiboShowApplication extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(WeiboShowApplication.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		SpringApplicationBuilder sources = builder.sources(WeiboShowApplication.class);
		return sources;
	}

}

### 如何将 Spring Boot 项目打包WAR 文件 为了将 Spring Boot 应用程序打包WAR 文件并部署到外部 Tomcat 容器中,需要遵循特定的配置步骤。以下是详细的说明: #### 配置 Application 类 Spring Boot 的应用程序类必须继承 `SpringBootServletInitializer` 并重写其方法以支持 WAR 包形式的启动[^1]。 ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MyApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyApplication.class); } public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 上述代码通过扩展 `SpringBootServletInitializer` 和覆盖 `configure()` 方法实现了对 Servlet 容器的支持。 --- #### 修改 Maven 构建文件 (pom.xml) 在项目的 `pom.xml` 中设置 `<packaging>` 属性为 `war`,并将嵌入式的 Tomcat 设置为 `provided` 范围,因为外部容器已经提供了这些功能[^3]。 ```xml <project> ... <packaging>war</packaging> <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Exclude embedded tomcat --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- Add support for JSP pages if needed --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> ``` 此部分定义了构建工具如何处理依赖项以及最终生成的目标文件类型。 --- #### 使用 Maven 进行打包 完成以上更改后,可以通过命令行使用 Maven 来重新打包项目为 WAR 文件: ```bash mvn clean package ``` 这将在目标目录下生成一个 `.war` 文件,可以直接将其复制到外部 Tomcat 的 `webapps/` 目录中进行部署。 --- #### 外部化配置文件 如果希望实现配置文件与应用分离,则可以根据 Spring Boot 提供的多种方式调整环境变量或指定其他位置加载配置文件[^2]。例如,在生产环境中可通过 `-Dspring.config.location` 参数指向自定义路径下的配置文件。 ```bash java -Dspring.config.location=/path/to/config/application.properties -jar myapp.war ``` 这种方式允许灵活管理不同环境中的参数而无需修改原始代码库。 --- ### 总结 通过继承 `SpringBootServletInitializer`、调整 POM 文件结构以及利用 Maven 插件的功能,能够轻松地将 Spring Boot 工程转换为适合传统 Java EE 容器使用的 WAR 格式档案[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值