前后端分离的架构已成主流,因此使用springboot构建应用是非常快速的,项目发布到服务器上的时候,只需要打成一个jar包,然后通过命令 : java -jar jar包名称即可启动服务了
实际中遇到项目中,会要求单点登录和后端包以及前段包都放在tomcat的情况,就必须打war包,因此在记录下由springboot打war包的记录。
根据实际项目以及参考博客:https://blog.csdn.net/zhangcongyi420/article/details/100065407 做了一下记录
1,pom文件添加如些依赖
这个依赖主要是用于在和jsp进行整合的使用,可酌情添加
<!--servlet api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
2、排除springboot内置的tomcat干扰
<!--最终打成war包,排除内置的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>
3,更改pom文件后还要改下启动类(main函数)
改造前,为最基本的springboot启动类
@SpringBootApplication
@EnableScheduling
@MapperScan("cn.com.hisense.api.*.mapper")
public class BasicDataApiApplication{
public static void main(String[] args) {
SpringApplication.run(BasicDataApiApplication.class,args);
}
}
改造后需要添加继承SpringBootServletInitializer
@SpringBootApplication
//开启定时任务
@EnableScheduling
@MapperScan("cn.com.hisense.api.*.mapper")
public class BasicDataApiApplicationextends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(BasicDataApiApplication.class,args);
}
/**
* 实现SpringBootServletInitializer可以让spring-boot项目在web容器中运行
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
builder.sources(this.getClass());
return super.configure(builder);
}
}
4,添加maven的编译插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5、如果在idea的环境下,依次执行窗口里的 clean ,install(package)即可。
执行完毕后,可以看到war包已经生成了,默认是在target目录下,位置可以在pom文件中进行配置
执行完毕。