大家都知道spring boot 内置了tomcat,如果打包成jar包,直接运行 nohup java -jar ***.jar > log.file 2>&1 &
就可以运行
但是为何我们要多此一举达成war包呢,如果我们项目中存在多种配置文件,如果每次都用外部配置去替换jar包种的配置文件,比较麻烦,所以我便将spring jar打包成war,那么在spring boot打包成war时需要哪些步骤呢
修改pom.xml
<packaging>war</packaging>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
添加SpringBootStartApplication类,跟应用程序主类同级目录
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里指向spring boot用main方法执行的Application启动类
return builder.sources(App.class);
}
}
按照以上步骤便可以让war在外部tomcat中正常运行
若出现以下错误
是因为spring boot 在打包成war包后没有识别到application.properties文件的配置,所以将配置地址部分做以下更改便可@PropertySource("classpath:application.properties")