springboot项目打成war包记录
背景:现在手上的项目基本进入收尾期,有必要将前后端的项目打成包丢到服务器上的docker进行测试了。springboot默认的打包方式为jar包,jar包的有优点是不需要更改的配置,并且内嵌了tomcat,如果打成jar包直接可以丢到docker中运行测试。但是考虑到前端代码只能打成war包,因此干脆也将后端代码打成war包和前端的代码一起放在tomcat容器中的webapps中运行就好了。...
·
背景:现在手上的项目基本进入收尾期,有必要将前后端的项目打成包丢到服务器上的docker进行测试了。
springboot默认的打包方式为jar包,jar包的有优点是不需要更改的配置,并且内嵌了tomcat,如果打成jar包直接可以丢到docker中运行测试。但是考虑到前端代码只能打成war包,因此干脆也将后端代码打成war包和前端的代码一起放在tomcat容器中的webapps中运行就好了。这样也易于维护。
在后端代码达成war包的过程中遇到了几个坑,通过在网上搜索相关文章慢慢摸索成功打包发布,在此记录一下主要的打包步骤,给之后的自己和有需要的你作为参考。
1:添加tomcat依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>compile</scope> </dependency>
这一步是我遇到的第一个坑,当时按照相关的文章介绍,将spring-boot-starter-tomcat从web依赖中去掉。也就是像下面这样:
<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>
如上图所示 我已经将去除的那段代码注释掉了。当时编译一直报错。因为我就没有去除而是直接在下面另外添加了tomcat相关的依赖了。
2:将jar包修改成war包
<packaging>war</packaging>
3: 添加servlet相关依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
4:修改启动类
package com.ahu.lock; 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 LockApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(LockApplication.class); } public static void main(String[] args) { SpringApplication.run(LockApplication.class, args); } }
5:定义最后生成war包的名称
<build> <finalName>lock</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
用finalName定义最后输出的war包的名称。
更多推荐
已为社区贡献1条内容
所有评论(0)