此文已由做者易国强受权网易云社区发布。
html
欢迎访问网易云社区,了解更多网易技术产品运营经验。java
采用Spring Boot框架来构建项目,咱们对项目的打包有两种方式可供选择,一种仍保持原有的方式不变,package一个war包放置到外置的应用容器中;另外一种则是直接打包成一个jar包,这个jar包里面包含了内置的应用容器,能够经过Java命令直接启动运行。
web
对于jar包的方式,前面文章的示例中其实咱们就是采用的此种方式,使用方式再也不赘述。
spring
若是采用war包的方式,其实也很简单,咱们仅仅须要变动下配置便可,具体操做以下所示:tomcat
将pom.xml文件中打包方式变动成war安全
<groupId>com.example.future</groupId> <artifactId>bingo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>
变动内置容器(默认tomcat)的做用范围为provided,这样在打包时就不会将内嵌的容器打入war包中。在依赖中加入以下内容:app
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
自定义一个servlet初始化类,继承SpringBootServletInitializer类,以下所示:框架
package com.example.future; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; /** * @author future */ public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(BingoApplication.class); } }
经过以上步骤便可完成war包方式的改写。咱们再执行package命令时,在target目录下生成的即为项目war包了。运维
具体的打包方式能够根据咱们项目的实际需求以及运维现状来决定。显而易见的,若是采用jar包的方式进行部署,那么对于容器(如tomcat)的管理,开发人员能够介入其中自行维护,部署也相对简单些。固然,若须要运维在外部配置指定也是能够的,在使用java命令启动打好的jar包时指定运行参数便可。分布式
不足之处,欢迎指正,谢谢~
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 分布式存储系统可靠性系列一:如何估算
【推荐】 深刻浅出“跨视图粒度计算”--三、EXCLUDE表达式