SpringBoot 打 jar包和打war 包配置

news2024/11/19 21:26:07

文章目录

    • 1. 前言
    • 2. SpringBoot 打 jar 包
    • 3. SpringBoot 打 war 包
    • 4.小结

1. 前言

目前我们熟知的SpringBoot 打包方式,一共分为两种,一种是打jar 包(内置tomcat 方式,yml 里的配置参数生效包括端口,和servlet 的context-path

server:
  port: 443
  servlet:
    context-path: /api

),另外一种是打war 包部署到tomcat , 这种方式使用外部的tomcat ,此时端口号和路径要根据外部tomcat 配置,才能生效。

2. SpringBoot 打 jar 包

  1. 配置maven
  • packaging 修改为 jar
<parent>
    <artifactId>wcx_pay_service</artifactId>
    <groupId>com.dechnic</groupId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>admin</artifactId>
  • spring-boot-starter-web 里面不用做任何改动
 <!--web-->
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

  • build 里面添加 spring-boot-maven-plugin 插件
<build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
               
            </plugin>
          </plugins>
    </build>
  1. 主启动类不用做任何配置改动
  2. cmd 项目根目录执行 mvn clean package
    或者 idea 里 maven 先执行clean ,再执行package
    在这里插入图片描述

3. SpringBoot 打 war 包

  1. maven 配置
  • packaging 修改为 war
<parent>
        <artifactId>wcx_pay_service</artifactId>
        <groupId>com.dechnic</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>
    <artifactId>admin</artifactId>
  • 排除内置的tomcat,添加tomcat依赖,或者添加servlet-api依赖,二者用其一,本人使用是添加tomcat依赖
<!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--去掉SpringBoot内置的tomcat, 打jar包需要去掉-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 这里指定打war包的时不再需要tomcat相关的包,但是本地运行时必须注释掉,否则会报错-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

备注:另附添加servlet-api依赖方式:

<!-- 添加servlet-api的依赖-->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>xxx</version>
    <scope>provided</scope>
</dependency>

  • build 里面 添加打 war 包插件配置
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

如果不添加 ,打包时会报错提示

Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project fitdegree: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
中文注释:org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war)在项目fitdegree上:错误组装war: webxml属性是必需的(或预先存在的WEB-INF/web.xml如果在更新模式下执行)

完整配置如下:

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring.boot.version}</version>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.project.lombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
  1. 主启动类继承 SpringBootServletInitializer,再重写 configure 方法
@SpringBootApplication(exclude = MongoAutoConfiguration.class,scanBasePackages = {"com.dechnic"})
@EnableJpaRepositories(basePackages = "com.dechnic.common.repository")
public class AppMain extends SpringBootServletInitializer {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(AppMain.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 参数为当前springboot 启动类,构建新资源
        return builder.sources(AppMain.class);
    }
}
  1. cmd 项目根目录 mvn clean package
    或者 idea 里 maven 先执行clean ,再执行package
    在这里插入图片描述
    大功告成!!!

4.小结

通过第二种打war包的配置方式,可以兼容本地开发时启动SpringBoot 服务,打包时只需要修改 package 为jar 或 war 即可,其他配置不用动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EndNote参考文献导入

简介 本文介绍如何在Word作文过程中借助EndNote管理参考文献&#xff0c;关于如何将参考文献导入到EndNote中这里不做说明&#xff0c;假定需要的文献均已经导入。 具体步骤 为什么需要文献管理工具来生成参考文献呢&#xff1f;最核心的原因就是自动控制的&#xff0c;文献的…

JAVA SCRIPT设计模式--结构型--设计模式之ADAPTER适配器(6)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能&#xff0c;所以不可能像C&#xff0c;JAVA等面向对象语言一样严谨&#xff0c;大部分程序都附上了JAVA SCRIPT代码&#xff0c;代码只是实现了设计模式的主体功能&#xff0c;不代…

代码详细教程+文档+PPT+源码等]SSM框架网上书城全套含微信支付|电商购物计算机专业毕业论文java毕业设计网站

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设SSM框架实现的网上书城-升级版_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzygogogo.co…

Spring的IOC是啥?有什么好处?

单一职责原则 依赖倒转原则 最小知识原则 接口隔离原则 合成/聚合复用原则 里氏代换原则&#xff0c;任何基类可以出现的地方&#xff0c;子类一定可以出现 依赖倒置 假设我们设计一辆汽车&#xff1a;先设计轮子&#xff0c;然后根据轮子大小设计底盘&#xff0c;接着根…

封装基板出厂100欧姆,测试85欧姆?

作者&#xff1a;一博科技高速先生成员 陈亮 封装基板&#xff08;Package Substrate&#xff09;是半导体芯片的载体。为芯片提供连接、保护、支撑、散热、组装等功效&#xff0c;以实现多引脚化&#xff0c;缩小产品体积、改善电性能及散热性、多芯片模块化等。我们生活中看…

构造HTTP请求 以及 关于HTTPS的加密

1.构造HTTP请求 构造HTTP请求有很多种方式.使用html,使用jQuery,使用socket…等等. 这里我们介绍两种. 使用html使用jQuery 1.1.使用html构造HTTP请求 使用html构造HTTP请求,要使用到 form 标签. 这里form标签中的属性有两个. action :填写数据要返送到的地址.(URL)meth…

【云原生 | Kubernetes 实战】08、零故障升级之 Pod 健康探测——启动、存活、就绪探测

目录 一、Pod容器健康探测 1.1 为什么要对容器做探测&#xff1f; 默认的健康检查 探测类型 检查机制 探测结果 Pod 探针相关的属性 两种探针区别 1.2 启动探测 startupprobe exec 模式 tcpsocket 模式 httpget 模式 1.3 存活性探测 livenessProbe 通过 exec …

C++const修饰成员函数

#include "iostream"using namespace std;//常函数class Person { public://this指针的本质 是指针常量 指针的指向是不可以修改的//const Person * const this//在成员函数后面加const&#xff0c;修饰的是this的指向&#xff0c;让指针指向的值也不可以修改void …

纤维二糖-聚乙二醇-羟基Cellobiose-PEG-OH羟基-PEG-纤维二糖

纤维二糖-聚乙二醇-羟基Cellobiose-PEG-OH羟基-PEG-纤维二糖 中文名称&#xff1a;纤维二糖-羟基 英文名称&#xff1a;Cellobiose-OH 别称&#xff1a;羟基修饰纤维二糖&#xff0c;羟基-纤维二糖 羟基&#xff08;oxhydryl&#xff09;是一种常见的极性基团&#xff0c;化…

深入场景痛点,制造业数据应用思考与实践

数字化转型是我国制造业进一步创新式发展的关键&#xff0c;决定了企业在未来生存和发展的态势。 但对于企业而言&#xff0c;如何以低耗能、低成本、高效率的方式加快制造业转型升级的步伐&#xff0c;仍然是众多制造企业需要解决的问题。 深入制造企业数字化转型的场景&…

#Spring-boot高级

一、SpringBoot 整合 Mybatis 1、SpringBoot 整合 Mybatis MyBatis 帮助我们快速集成 SpringBoot 提供的一个组件包&#xff08;mybatis-spring-boot-starter)&#xff0c;使用这个组件可以做到以下几点&#xff1a; 自动检测现有的DataSource将创建并注册SqlSessionFactory…

从工地转行网络安全工程师,工资翻了好几倍,我想和大家聊聊我的经历

成功的从工地转行到办公室办公也有一年了&#xff0c;楼主就来说说&#xff0c;从工地到白领的过渡吧&#xff0c;这其中历经艰辛&#xff0c;最终终达成目标。没错&#xff0c;楼主现在成为了一位网络安全工程师… 先说说为什么转行吧&#xff0c;身边很多做土木工程的都转行…

还在一张张打印CAD图纸吗

用CAD打印少些图纸可以一张张的打印&#xff0c;但是需要打印上百甚至上千张图纸的时候一张张打印就不知道需要用多久的打印时间了&#xff0c;那么在CAD梦想画图软件中有一个批量打印图纸的功能&#xff0c;能节约很大一部分打印时间 操作步骤 1.在网上下载CAD梦想画图 2.用…

Ansys Lumerical | 行波马赫曾德尔调制器的仿真设计与优化

说明 本案例将Lumerical和HFSS在行波MZM调制器建模中的功能与optiSLang相结合&#xff0c;提供了强大的优化能力以寻找最佳性能设计。 下载 联系工作人员获取附件 综述 本案例建立在已有的硅波导建模实例&#xff08;Ansys Lumerical 行波 Mach-Zehnder 调制器仿真分析&#x…

知乎zse-96算法-jsrpc方案

文章目录 1.git 下载exe文件2. 控制台执行JsEnv.js,建立连接3.抠取 加密js代码4. python 调用rpc临时有知乎需求,就研究了一下知乎搜索接口,发现主要是zse-96算法难,补环境又有很多坑,又想快速解决问题,就有了用jsrpc来解决的想法,后面有时间了就研究一下再发一个补环境…

JavaScript中的sessionStorage

JavaScript中的sessionStorage 该文章需要联系这篇文章学习&#xff1a;JavaScript中的localStorage 案例池子&#xff1a; JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果…

[C++]类和对象【上篇】

​ &#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录1.面向…

归并排序 (递归+非递归)

文章目录1. 归并排序 递归1.基本思想2. 使用两个函数完成归并3. 递归结束条件4.时间复杂度与空间复杂度计算1. 时间复杂度2. 空间复杂度5. 代码2. 归并排序 非递归1. 思想2. 越界问题1. .end1 beign2 end2 越界方式 1方式 2整体拷贝与拷贝一部分&#xff0c;归并一部分的区别2.…

数据库与身份认证:数据库的基本概念

什么是数据库 数据库&#xff08;database&#xff09;是用来组织、存储和管理数据的仓库。 当今世界是一个充满着数据的互联网世界&#xff0c;充斥着大量的数据。数据的来源有很多&#xff0c;比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据&…

【知识图谱】(task1)知识图谱概论

note 知识图谱技术要素 文章目录note一、语言与知识二、知识图谱的起源三、知识图谱的价值四、知识图谱的技术内涵4.1 知识图谱是交叉领域4.2 技术内涵&#xff08;1&#xff09;基于图的表示学习&#xff08;2&#xff09;图数据存储和查询&#xff08;3&#xff09;知识图谱…