SpringBoot默认的打包方式是jar,需要发布的时候,可以直接打成jar包,然后放在服务器上,运行java -jar xxx.jar 即可。
SpringBoot项目如果采用jar包来启动的话,必须要分配相应的端口,如果对于一些公司,项目很多,或者端口的使用有限制。很有可能有些项目因为端口不够用受限制,所以这个时候,就可以打成war包,采用tomcat启动,使用统一的端口。
如果想打成war,放到Tomcat上,使用tomcat来统一启动。那就需要修改一些配置。
第一步:修改pom.xml文件
1)修改项目的打包方式
<packaging>war</packaging>
2) 去掉SpringBoot内置的tomcat
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
3)引入新的tomcat依赖。其中provided表示,该依赖已经由JDK或者容器提供。打包时,不会打入war中,也就不会。只是我们在编译和测试时使用。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
第二步:修改启动类
修改启动类
1)启动类直接继承SpringBootServletInitializer类,重写configure方法。
@SpringBootApplication
public class GeoserverApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(GeoserverApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(GeoserverApplication.class, args);
}
}
2)或者新建ServletInitializer类继承SpringBootServletInitializer。
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DelShpApplication.class);
}
}
注:我这里用的springboot版本(1.5...)比较低,import的时候,重新导入一下。
第三步:打包
直接maven -clean-package即可。
然后找到左侧项目栏下的target下面就有自己生成的war包
这个war的名字可以打包之前指定。不然会用默认的项目的artifactId + version
看到有人说,需要linux上的JDK版本和本地的JDK版本必须一致才生效,这个也需要留意一下。
另外在发布的时候,我发现我这个springboot版本打出来的war包 ,放到tomcat8上可以正常启动,但是放到tomcat7上就会报错。这是因为Springboot2.0以上,就不再支持tomcat7。也就是你的springboot的war包要想在tomcat7上运行,就算设置了以上内容也是不行。必须降低springboot的版本。选了1.+ 就可以了
第四步:部署发布
直接将生成的war包放到服务器的tomcat的webapps文件夹下。然后启动tomcat。启动之后,会在webapps下解压缩出一个和war同名的文件夹。你的项目生成的class文件,配置文件都在这下面。需要修改配置信息的话,也可以在里面直接修改。
项目启动之后,端口由tomcat统一管理,如果没修改tomcat 的端口的话,默认都是8080。打开你项目或者接口的话,还需要在ip:port/后加上你的war名称,然后再后接接口地址。
最后:
如果你这是个新项目,那么新建项目的时候,直接勾选war的选项也可以。最终和上面的设置效果是一样的。