# 项目部署
# war 包
修改 pom.xml ,将 packaging 属性设置为 war
<groupId>cn.demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
修改启动类 Application.java ,使其继承 SpringBootServletInitializer ,并重写 configure 方法
// Application.java
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
执行 mvn clean package 即可打包出 war 包
# jar 包
修改 pom.xml ,将 packaging 属性设置为 jar
<groupId>cn.demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
添加 spring-boot-maven-plugin 依赖,它会自动帮你生成 MANIFEST.MF 文件到 jar 包中,使其变成一个可执行的 jar
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
执行 mvn clean package 即可打包出 jar 包
# 前端部署
前端有两种部署方式:一是放到 nginx 上,二是放到后端的 war or jar 包中。
常用的是放到 nginx 上,可以较为方便的配置缓存,转发规则等。如果项目场景简单,也可以直接放到后端项目里部署。
无论采用哪种方式,首先都要在前端进行生产环境配置,配置文件为 .env.production ,配置完成后,执行 yarn build:prod 即可将资源打包到 dist 目录下
# nginx 部署
放到 nginx 指定目录下,并根据项目实现,配置转发规则,可参考 Build & Deploy
# 嵌入后端部署
首先将 dist 目录拷贝到 src/main/resource 目录下,并将 dist 重命名为 static,然后配置 WebSecurityConfig.java 文件,将一些前端的访问路径加入白名单
// WebSecurityConfig.java
antMatchers(
securityConfig.getLoginPage(),
"/druid/**",
"/file/download/**",
"/",
"/static/**",
"/**/favicon.ico"
).permitAll()