详解Maven如何打包SpringBoot工程

springboot瘦身打包(jar)配置(maven打包) 阅读详情
AI摘要

本文详细介绍了如何在SpringBoot项目中使用spring-boot-maven-plugin进行Maven打包,包括添加插件到pom.xml、配置主类、定制打包文件名、管理资源和依赖,以及自定义插件执行阶段。

目录

一、spring-boot-maven-plugin详解

1、添加spring-boot-maven-plugin插件到pom.xml

2、配置主类(Main Class)

3、配置打包的JAR文件名

4、包含或排除特定的资源文件

5、指定额外的依赖项

 6、配置运行参数

7、自定义插件执行阶段

二、Maven打包SpringBoot工程

1、项目配置文件中包含spring-boot-starter-parent

2、添加spring-boot-maven-plugin插件

3、执行Maven打包命令

 4、运行Spring Boot应用程序:


在使用Spring Boot和Maven的项目中,你可以使用Maven来打包你的项目。Spring Boot项目通常使用Maven插件中的spring-boot-maven-plugin来执行打包操作

一、spring-boot-maven-plugin详解

spring-boot-maven-plugin是Spring Boot项目中用于支持Maven构建的插件。它提供了一些功能,使得将Spring Boot应用程序打包成可执行的JAR或WAR文件变得更加简单。以下是一些常见的用法和配置示例:

1、添加spring-boot-maven-plugin插件到pom.xml

在<build>部分的<plugins>中添加spring-boot-maven-plugin插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
2、配置主类(Main Class)

通过配置mainClass来指定Spring Boot应用程序的主类。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.example.YourApplicationClass</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>
3、配置打包的JAR文件名

使用<finalName>元素来指定生成的JAR文件的名称。

<build>
    <finalName>custom-application-name</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
4、包含或排除特定的资源文件

通过配置<resources>元素来包含或排除特定的资源文件。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*.properties</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>
5、指定额外的依赖项

通过<dependencies>元素指定额外的依赖项,这些依赖项会被包含到生成的JAR文件中

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.example</groupId>
                        <artifactId>extra-library</artifactId>
                        <version>1.0.0</version>
                    </dependency>
                </dependencies>
            </configuration>
        </plugin>
    </plugins>
</build>
 6、配置运行参数

使用<arguments>元素来配置运行时的JVM参数

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <arguments>
                    <argument>--server.port=8081</argument>
                </arguments>
            </configuration>
        </plugin>
    </plugins>
</build>
7、自定义插件执行阶段

通过<executions>元素来自定义插件执行阶段。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <!-- 自定义配置 -->
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

二、Maven打包SpringBoot工程

1、项目配置文件中包含spring-boot-starter-parent

在你的pom.xml文件中,确保你的项目是继承自spring-boot-starter-parent。这样可以确保使用Spring Boot的合适版本和默认配置。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.5</version> <!-- 使用你的Spring Boot版本 -->
</parent>
2、添加spring-boot-maven-plugin插件

在<build>部分添加spring-boot-maven-plugin插件。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

这个插件会自动将项目打包成可执行的JAR文件。

3、执行Maven打包命令

打开命令行,进入项目根目录,执行以下Maven命令:

mvn clean package
 

 4、运行Spring Boot应用程序:

使用以下命令来运行打包后的JAR文件:

java -jar your-project.jar

使用maven打包springboot项目 项目场景: 在Idea中,新建了一个Springboot项目,功能开发完后,想要打包测试,结果出现了以下错误,记录一下,方便遇到同样问题的同学 问题描述: 在项目中,我是使用命令行完成打包的,输入:mvn clean install -DskipTests,打包测试,结果出现下列错误: 代码截图: 原因分析: 经过排查,发现是我的java版本和编译器选择的不一样,java是8,结果编译器选的是11: 方案1:修改配置 然后再看系统环境变量,是否已经配置了JAVA_HOME变量,如果没有,也要去 阅读详情

相关推荐

springboot个性化打包插件 —— maven-assembly-plugin

个性化打包插件 —— maven-assembly-plugin 将项目输出与它的依赖项、模块、站点文档、脚本和其他文件一起组装成一个可分发的归档文件。

m0_63004677的博客 4833

SpringBoot - Maven方式打包

SpringBoot 为当前最流行的JAVA框架 , 内嵌了 Tomcat 服务器 , 我们不用再像以前 Spring 那样打包成 war , 然后将 war 扔到 tomcat 中运行 。 我们现在可以直接将 SpringBoot 项目打包为一个内置 tomcat 的可运行 jar , 通过 java -jar xxx.jar 直接运行 (方便易用) 。 打包 SpringBoot 的方式有很多 使用 Maven打包 jar (主流) 使用各种开发工具打包Jar . 如 : idea , eclip.

m0_67401545的博客 7143

SpringBoot maven多环境打包应用

目录修改pom.xml文件修改application.propertiesmaven打包命令在eclipse或idea中run项目的问题 springboot项目可以在运行时指定配置文件,类似这样java -jar xxx.jar --spring.profiles.active=test,test即指的是使用application-test.properties配置文件 而本文主要介绍如何在m...

hrt的博客 1858

maven的5种打包方式:springboot-maven-plugin详解

2.3maven-jar-plugin和maven-dependency-plugin插件打包 作用:将执行jar包和依赖包分开(依赖包放在lib目录下),且位于同一级目录 2.3.1 插件功能介绍 1.maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分内容,<mainClass>com.xxg.Main</mainClass&gt...

健康平安的活着的专栏 1万+

基于IDEA的SpringBoot项目Maven聚合工程打包

基于IDEA的SpringBoot项目Maven聚合工程打包项目结构1. 修改父项目的pom.xml文件2. 修改子项目的pom.xml文件3.测试3.1 在jt-manager的pom.xml中引入jt-utils的依赖3.2 在jt-manager中,编写Controller,调用jt-utils下的工具类3.3 依次点击父项目clean、install即可完成打包3.4 在cmd控制台启动jt-manager子项目并使用postman测试 项目结构 |-jt(root) |–jt-manager |–

Main_1125的博客 878

Springboot Maven 多环境打包以及聚合打包(一)

说明 本文只是一个总结 参考文章:Maven 插件 - 打包时多环境配置文件设置Maven 多环境打包maven 多环境打包发布的两种方式 开发中碰到的问题1 现在采用 spring boot 开发时,spring boot 开发的配置文件结构目录,如下图所示: 这样有个好处是配置文件可以分开,公用的配置项可以放在 application.properties 文件里面,再通过 spr...

醉疯觞博客 1万+

SpringBoot工程如何正确打包成SDK jar:关闭repackage与自动配置实践

在Java生态中,jar包作为代码分发的基础单元,承载着应用交付与组件复用的双重使命。然而,可执行jar与SDK jar在内部结构和类加载机制上存在本质差异,前者嵌套业务类与依赖,专为java -jar启动设计;后者则需以标准包路径暴露类,并依赖Maven坐标传递依赖。SpringBoot默认的repackage插件常常导致将应用误当SDK输出,引发类找不到与依赖缺失。通过关闭spring-boot-maven-plugin的repackage,并结合Maven依赖范围控制、@ConfigurationPr

weixin_33785108的博客 350

SpringBoot+Maven多模块项目从零搭建:模块划分、父POM与打包部署实战

在Java企业级开发中,随着业务复杂度提升,单模块工程逐渐暴露出依赖混乱、构建效率低、团队协作困难等问题。多模块项目通过将工程拆分为独立模块,实现代码隔离与复用,是解决这些痛点的核心架构手段。Maven作为主流构建工具,通过父POM统一管理依赖版本,利用reactor机制自动处理模块构建顺序,结合SpringBoot的自动配置与打包插件,能够快速搭建结构清晰、易于维护的工程。无论是业务拆解还是技术分层,合理的模块划分都能显著提升开发效率与可维护性。本文从实际工程角度出发,详细讲解SpringBoot与Mav

weixin_34268579的博客 383

Maven插件—01、基础本地打包、web服务打包篇(含源码)

本文详细介绍了Maven打包插件的使用方法,重点对比了maven-assembly-plugin、maven-shade-plugin和spring-boot-maven-plugin三种常见的打包方式。详细展示了如何在Maven项目中配置这些插件来生成可执行JAR包和带依赖的包,提供了完整的配置示例和实际应用场景,为Java项目打包提供了全面的技术指导。

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 728

SpringBoot与Maven的Web项目构建指南:父子工程详解

Maven父子工程结构是一种组织多个模块项目的方式,它允许在一个父项目下管理多个子模块。通过这种方式,父工程可以统一管理依赖版本,插件配置,以及项目的整体构建配置,从而简化项目维护,并加强模块间的一致性。这种结构特别适合于大型项目,因为它有助于保持代码的模块化和复用性,同时还能够提高构建过程的效率。理解Maven父子工程的基本概念和结构,是深入学习和应用Maven父子工程管理的关键一步。

weixin_36444661的博客 983

ST-Link V2的隐藏技能:多通道串口调试的终极指南

本文深入探讨了ST-Link V2的多通道串口调试功能,突破传统烧录工具的限制。通过详细的硬件配置、Arduino IDE设置和实战案例,展示了如何利用SWD接口实现多通道数据监控,提升STM32F103C8T6等开发板的调试效率。文章还提供了PCB布局优化和性能调优技巧,助力开发者充分发挥ST-Link V2的潜能。

weixin_29285605的博客 355

maven之插件打包详解

文章目录1 assmebly1.1 assmebly简介1.2 assmebly配置1.2.1 maven中配置1.2.2 maven标签1.2.2.1 configuration标签说明1.2.3 assembly.xml配置1.2.4 assembly标签1.2.4.1 id标签1.2.4.2 formats标签1.2.4.3 includeBaseDirectory标签1.2.4.4 dependencySets标签1.2.4.5 fileSets标签1.2.4.6 files标签 1 assmebl

上善若泪 8749

Open3D 教程学习指南 (持续整理)

Open3D 是一个开源库,旨在为 3D 数据处理提供高效且易用的工具。它由 Intel 开发和维护,支持多种 3D 数据处理任务,如点云处理、3D 重建、几何处理和可视化等。

Chase Blog 5931

Maven工程打包jar

Maven打包一般可以生成两种包一种是可以直接运行的包,一种是依赖包(只是编译包)。Maven默认打包时jar,如果需要修改其他类型。可以修改pom.xml。

myli92的博客 6820

用本地 Chrome + DeepSeek 实现浏览器自动化:browser-use 实战与踩坑记录

本文记录了使用本地Chrome浏览器结合DeepSeek API实现浏览器自动化的实战经验。作者通过browser-use项目连接本地Chrome(启动时需添加--remote-debugging-port=9222参数),并解决了DeepSeek API不支持response_format的问题,通过设置dont_force_structured_output=True和add_schema_to_system_prompt=True成功绕过。同时分享了任务描述需精准的重要性,避免Agent输出多余信息导

LY的博客 750

VSCode玩转Arduino:手把手解决‘未定义Serial’和头文件找不到的坑

本文详细介绍了在VSCode中配置Arduino开发环境时遇到的‘未定义Serial’和头文件找不到问题的解决方案。通过修改c_cpp_properties.json文件、调整IntelliSense引擎设置以及添加正确的库路径,开发者可以高效解决这些常见错误,提升开发体验。文章还提供了针对不同开发板和平台的高级配置技巧,确保配置的长期有效性。

weixin_42620202的博客 359

【Maven】打包插件使用详解

常用Maven打包插件

z_xiao_qiang的博客 6422

tewa-707e光猫超级密码获取方法

这款光猫很魔性,没有WIFI,没有USB接口,没有Telnet,试了很多方法去获取超级密码都不行。解密时可能会报错,可能是文件后面部分不晓得是咋拼接过来的,用AES解密时分组数据有问题。3、这个文件是用AES加密了的,直接打开是乱码,所以得用AES解密,key为16个字节的 x00。打开解出来的文件,然后搜索 telecomadmin,就可以发现超级密码了。参考资料里面的光猫不是同一款,但解密的方法基本相同的。

shaowl111的专栏 1万+

SpringBoot Maven编译打包

SpringBoot Maven编译打包 springboot打包插件 package打包一次打包两个 jar 依赖 jar 分离打包 打war包

weixin_45698637的博客 4465

2025国赛数学建模A题 完整Python代码 烟幕干扰弹的投放策略

常量定义G = 9.8 # 重力加速度 m/s²V_SMOKE_SINK = 3 # 烟幕下沉速度 m/sMISSILE_SPEED = 300 # 导弹速度 m/sEFFECTIVE_RADIUS = 10 # 有效遮蔽半径 mEFFECTIVE_DURATION = 20 # 有效遮蔽时间 sTARGET_POS = np.array([0, 200, 0]) # 目标位置FALSE_TARGET_POS = np.array([0, 0, 0]) # 假目标位置# 初始位置。

YOLO 1106

多测师肖sir_高级金牌讲师_数据库之存储练习题(8.13.1)

实验 一、 实验要求: 理解存储过程的概念 掌握存储过程的语法格式、使用方法 掌握存 储过程的创建、执行 二、实验前提: – drop table if exists student; – Create table student – (Id varchar(255), #学号 – Name varchar(255), #姓名 – Roomid varchar(255), #班级 – Sex char(1), #性别 – Degree varchar(3) );#成绩; Insert into stud

多测师肖sir的博客 706

Maven将springboot工程打包成docker镜像

** Maven打包成docker镜像 ** 由于工作原因,需要通过maven将springboot项目打包成docker镜像,先前以为只能在linux上完成,最近调研了一下,也可以在window环境下进行打包。 ​ 下面以thinkpad E470,windows10操作系统以及eclipse开发集成工具为例,进行说明。 Springboot项目的创建,本文不进行介绍,请自行百度。 1、增...

sanshizhang的博客 3991

伺服系统控制原理深度解析

摘要:本文系统阐述了伺服系统的控制原理与应用。首先介绍了伺服系统的定义、组成及其在工业自动化中的重要性;然后详细分析了反馈控制机制、稳定性判据和性能指标;重点推导了传递函数和状态空间两种数学模型,并通过LaTeX公式展示了二阶系统建模过程;进而对比了PID控制、状态反馈及自适应控制等方法的优缺点;最后结合数控机床等案例,验证了理论方法的有效性,并展望了伺服系统智能化发展趋势。全文兼顾理论深度与实践指导性,为控制工程领域提供了系统的技术参考。

技术工作者 1266

Maven多模块工程打包成war

Maven多模块工程打包成war 2017年11月06日 14:26:26 walton_an 阅读数:443 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/qq_36390175/article/details/78457293 对于Springboot中多模块的maven工程项目(一般是dao层是个maven工程,web层是个maven...

f45056231p的博客 2304

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

springboot maven 打包的两种方式

一、springboot maven打ja包 1、配置文件不外放 a、maven配置打包插件 <!--打包配置,执行mvn clean package--> <packaging>jar</packaging> <!--maven打war包依赖配置--> <!--<packaging>war<...

weixin_40010498的博客 5072

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: Java -jar参数详解
下一篇: SpringBoot中解决如何跨域方案
境里婆娑
境里婆娑 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 300原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

境里婆娑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值