使用idea对springboot项目打war包及遇到的问题总结
Posted 王萌萌萌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用idea对springboot项目打war包及遇到的问题总结相关的知识,希望对你有一定的参考价值。
使用maven创建的springboot项目的默认打包方式是jar包,而且springboot是自带Tomcat的。部署项目时需要打包成对应的war包,并将项目部署到服务器的Tomcat下,所以项目打包时就需要修改一些配置。
主要修改pom.xml文件中的一些配置
1、修改打包方式,将jar修改为war
<packaging>war</packaging>
2、在spring-boot-starter-web
依赖中移除tomcat模块,改用服务器配置的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>
</dependency>
针对这一点,搜索的文章中大多是这样介绍的,在我实际的配置中,并没有移除这个模块,而且打包成功,暂未发现有什么影响。
3、在pom.xml文件添加servlet依赖。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>$servlet.version</version>
<scope>provided</scope>
</dependency>
4、在pom.xml文件中将build
节点中的finalName
修改为项目名称。
<build>
<finalName>searchengine</finalName>
</build>
5、修改启动类
使其继承SpringBootServletInitializer ,覆盖configure(),把启动类Application注册进去。外部web应用服务器构建Web Application Context的时候,会把启动类添加进去。
public class SearchengineApplication extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
return application.sources(SearchengineApplication.class);
public static void main(String[] args)
SpringApplication.run(SearchengineApplication.class, args);
进行到这一步,配置基本上就修改完成了, 在idea中,找到root项目下的clean和package, 分别按照顺序执行,成功后即可打包成功想要的war包。
遇到的问题
小编的项目至此并没有成功打出war包,在package执行过程中出现如下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war
(default-war) on project JettyCode: Error assembling WAR: webxml attribute is
required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]
这是因为项目在打包时未找到对应的web.xml文件
解决方法
如果项目中存在web.xml文件,则需要在pom.xml文件的<build>节点中,添加maven-war-plugin的插件配置,并配置好对应的目录
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webResources>
<resource>
<directory>WebContent</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
如果项目中没有web.xml文件,则只需要按照如下方式,在pom.xml文件的<build>节点中添加配置即可
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
小编的项目属于第二种,pom.xml文件配置好之后,成功打成war包,并在服务器的 Tomcat上部署成功。
以上是关于使用idea对springboot项目打war包及遇到的问题总结的主要内容,如果未能解决你的问题,请参考以下文章