现在要说到目前java软件开发行业中比较流行的框架,springboot必须得拥有姓名,那么你了解springboot打包是指什么吗?知道是用在何处的吗?有兴趣的小伙伴可以跟小编一起来看看哦。
首先我们要知道springboot应用程序有两种运行方式,分别是以jar包方式运行和以war包方式运行。那么在实际的项目中,并没有说哪一种方式是最好的,只是根据客户不同的需求制定不同的部署方案,比如说有些客户可能比较看中管理功能,就会要求数据源和tomcat相关配置必须由管理员去进行管理,那么选择war包方式,但也有些客户希望借助容器化进行大规模部署,那么jar方式可能更适合。其实不管选择哪种方式,在部署时都会遇到下面的问题:
如果是需要打war包,那么不仅是pom文件需要修改,应用程序也要做相应的改动,改动完后呢,应用程序就无法在本地运行了,需要打完包后将配置信息修改回来,这样的话不仅麻烦,还容易出错。
不管是war包还是jar包,如何管理不同环境的配置文件,保证不会出错,虽然spring boot有提供spring.profiles.active配置设置不同的环境,但一方面需要人为修改配置文件,只要是人为的就有可能出错,另一方面,客户有时候出于安全考虑不会提供生产环境配置信息,那么这时候就无法指定prifiles.active了。
如何将多个spring boot模块打包在一起?这是个问题。
jar包需要配合容器化才能发挥出最大的优势,如果说没有容器,spring boot jar包就是一个玩具也不为过,随处运行的jar包,缺少统一管理,是达不到生产的要求,那么如果从jar包到容器也是一个问题。
我们早期碰到这些问题,都是人工解决的,这样不仅效率十分低下,而且部署一次都需要十几分钟,是很容易出错的,一百次出错一次都算是概率低了,但是生产出错一次都是重大事件哦,所以我们也在思考如何通过自动化解决以上问题,如何将开发和部署分离,开发人员只关心开发,开发完提交代码,打包和部署都是后台透明的完成。下面呢就是解决方案的示例了。
spring boot打war包的步骤如下
在pom.xml中将打包方式改为war。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <packaging>war</packaging> ... </project>
2.设置spring-boot-starter-tomcat范围为provided
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
3.修改spring boot的启动类,继承SpringBootServletInitializer
public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DemoApplication.class); } }
每打包一次都要修改pom.xml和启动类,打包完再修改回来,十分的繁琐,因为,我们提出以下整改方案
从pom.xml复制一个pom-war.xml文件,将pom-war.xml修改为war包配置
在根目录下(除了src目录外都可以)复制一份启动类的代码,修改为war包的配置方式。
编写shell脚本进行打包。
shell脚本打包过程为
备份当前启动类的java代码。
将war包启动类的代码替换掉当前启动类的代码。
maven指定pom-war.xml文件进行打包。
打包结束后恢复启动类文件。
以下就是参考脚本了:
app-war.sh
#!/usr/bin/env bash v1=src/main/java/com/definesys/demo/DemoApplication.java v2=war/DemoApplication.java v3=war/DemoApplication-bak.java cp -rf $v2 $v1 mvn clean package -Dmaven.test.skip=true -f war-pom.xml #recovery
通过预先配置好pom文件和启动类文件,开发人员只要运行app-war.sh脚本无需修改任何文件即可生成war包。
那么以上就是本篇文章的所有内容了,还想了解更多java架构师相关信息,就记得赶快来关注本站消息哦。