Spring Boot 发布 jar 包转为 war 包秘籍。

简介: imageSpring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布。使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题。
image

Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布。使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题。所以,jar包不一定合适适用所有的场景,如war包更合适,你可以尝试转为传统的war包,这样打补丁包可能更方便。

如何配置打war包呢?

以下配置以Maven为说明讲解,Gradle的查看类似配置。

1、修改Spring Boot启动类

启动类继承SpringBootServletInitializer类,并覆盖configure方法。

下面是Spring Boot提供的示例代码。

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

2、修改jar为war包形式

在pom文件中,添加war包配置。

<packaging>war</packaging>

如果不添加,默认为jar包。

3、去除Spring Boot内置Tomcat

修改自带tomcat依赖范围为provided,防止与外部tomcat发生冲突。

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

4、添加war包打包插件

如果你用的是继承spring-boot-starter-parent的形式使用Spring Boot,那可以跳过,因为它已经帮你配置好了。如果你使用的依赖spring-boot-dependencies形式,你需要添加以下插件。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

failOnMissingWebXml需要开启为false,不然打包会报没有web.xml错误。

如何打war包?

打war包方式和打jar包方式一样,没有区别。

  • 在Maven中使用mvn clean package命令即可打包。

  • 在Idea中可以这样设置打包:

image

改在war包后,发现打war包比打jar要上好多。

jar包转war包有什么影响?

1、application配置文件中的server.xx等关于容器的配置就无效了,改配置需要在外部tomcat中进行。

2、Spring Boot的升级是否需要Tomcat跟着升级?需要观察。

3、打war包比打jar明显要变慢好多。。

暂时还没遇到其他问题,大家对此有什么看法都可以在下方留言。

推荐:Spring Boot & Cloud 最强技术教程

扫描关注我们的微信公众号,干货每天更新。

image
相关文章
|
2月前
|
Java 应用服务中间件 Maven
Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式)
73 1
|
13天前
|
JavaScript Java 数据安全/隐私保护
基于SpringBoot+Vue毕业生信息招聘平台系统【源码+论文+演示视频+包运行成功】_基于spring vue的校园招聘系统源码(2)
基于SpringBoot+Vue毕业生信息招聘平台系统【源码+论文+演示视频+包运行成功】_基于spring vue的校园招聘系统源码
22 0
基于SpringBoot+Vue毕业生信息招聘平台系统【源码+论文+演示视频+包运行成功】_基于spring vue的校园招聘系统源码(2)
|
20天前
|
Java Maven 容器
springBoot项目导入外部jar包
springBoot项目导入外部jar包
17 4
|
22天前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
45 1
|
22天前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
23 1
|
13天前
|
JavaScript Java 关系型数据库
基于SpringBoot+Vue毕业生信息招聘平台系统【源码+论文+演示视频+包运行成功】_基于spring vue的校园招聘系统源码(1)
基于SpringBoot+Vue毕业生信息招聘平台系统【源码+论文+演示视频+包运行成功】_基于spring vue的校园招聘系统源码
16 0
|
2月前
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
2月前
|
Java Maven Spring
maven打包插件maven-jar-plugin与spring-boot-maven-plugin
该内容介绍了两个Maven打包插件:`spring-boot-maven-plugin`和`maven-jar-plugin`。`spring-boot-maven-plugin`是Spring Boot项目的默认打包工具,它会包含项目类文件、资源和依赖的jar,但不会解编译依赖。而`maven-jar-plugin`则用于创建普通JAR包,不包含依赖。文中还展示了两个插件打包后的效果差异,并强调了持续练习以掌握这些技能的重要性。
42 0
|
26天前
|
druid Java Maven
杨校老师课堂之java_关于如何下载jar包的教程
杨校老师课堂之java_关于如何下载jar包的教程
51 0
|
7天前
|
监控 Ubuntu Java
如何在Ubuntu上运行Jar包?
【7月更文挑战第9天】
13 0
如何在Ubuntu上运行Jar包?