基于maven
在pom.xml文件中
修改打包方式
<!-- 修改打包方式-->
<packaging>war</packaging>
删除默认的tomcat,否则发布后会和springboot内嵌的tomcat冲突
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在build标签下,可以指定打包项目的最终名字
<!-- 指定打war包的名称-->
<finalName>SpringBootWar</finalName>
关于resouce
如果在Pom中没有其他resouce标签,那么
resources文件夹下的就会被默认自动编译打包进去
如果指定了其他resouce标签,那么默认的就失效了,得手动加上去
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.*</include>
</includes>
</resource>
</resources>
修改启动类
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringbootLearningApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//参数为当前springboot启动类
//构造新资源
return builder.sources(SpringbootLearningApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SpringbootLearningApplication.class, args);
}
}
第二种方式,不直接修改启动类:
在启动类同级目录下新建一个类继承SpringBootServletInitializer并重写configure方法
package com.example.demo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ApplicationInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootLearningApplication.class);
}
}
maven
使用maven的clean命令,先清空否则可能会有问题
然后package命令,就可以打成war包在target目录下
部署
将target下打好的war包,放到tomcat的webapps目录下,启动访问
注意:这个war包部署到外部tomcat,所以springboot项目中指定的端口号和根路径都会失效,以外部tomcat为准
如果发布到tomcat上可以启动,但是不能访问,那记住看下自己项目的tomcat版本和部署的服务器的tomcat版本,版本可能不兼容,例如9和10
---------------------------------
其他springboot相关知识看专栏其他内容