SpringBoot学习笔记(10)-使用Gradle和Maven将项目打包

升级 SpringBoot3 全项目讲解 — 为什么 SpringBoot3 应该抛弃 Maven,搭配 Gradle 来使用? Gradle 采用了增量构建和缓存机制,这使得它在构建速度上比 Maven 更快。尤其是在大型项目中,Gradle 的优势更加明显。Spring Boot 3 项目通常包含大量的依赖和模块,使用 Gradle 可以显著减少构建时间。 阅读详情


环境:IntelliJ idea + SpringBoot2.0 + gradle4.8 (maven)+ tomcat8
由于SpringBoot程序内部集成了tomcat,故官方推荐开发者将项目打成jar包,并且用java -jar xx.jar运行项目;但是在实际开发中,开发者仍习惯将web项目打为war包并部署到服务器tomcat中,方便启动和监控项目的情况。

更多关于SpringBoot的总结请点击:SpringBoot使用总结


一、使用Gradle打War包运行

1.1、修改build.gradle
//表示打包方式为war
apply plugin: 'war'

//排除SpringBoot内置的tomcat
providedCompile("org.springframework.boot:spring-boot-starter-tomcat")

1.2、继承SpringBootServletInitializer

在SpringBoot的启动类上继承SpringBootServletInitializer并且重写configure方法,让SpringBoot在启动时启动Servlet3.0,并以此为入口

@SpringBootApplication
@MapperScan("com.iteason.springboot_mybatis2.mapper")
@EnableTransactionManagement
public class SpringbootMybatis2Application extends SpringBootServletInitializer{
    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatis2Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootMybatis2Application.class);
    }
}

1.3、使用gradle打war包

在项目路径中调用命令行,执行gradle build命令,即可在libs中找到该war包


1.4、部署错误

将war包移动到tomcat的webapps中并启动tomcat进行部署,出现以下错误:

严重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test]]
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultValidator' defined in class path resource 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean]: Factory method 'defaultValidator' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager
...

这个问题产生的原因是使用了低于tomcat8版本的tomcat部署,而SpringBoot默认是以tomcat8进行部署的,所以会报错,下载新版本tomcat即可解决该问题。

二、使用Gradle打Jar包

若需要打Jar包,则不需要前面几步的配置,而只需要使用命令gradle build即可打出Jar包了。

三、使用Maven打War包

3.1、修改pom.xml
				<properties>
					<!-- 打包方式为Jar包 --!>
					<packaging>war</packaging>
				</properties>
			
			   <plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
	
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			  </plugin>
			  
			<dependency>
			<!-- 将SpringBoot自带的tomcat依赖设置成为由开发者提供 --!>
			    <groupId>org.springframework.boot</groupId>
			    <artifactId>spring-boot-starter-tomcat</artifactId>
			    <scope>provided</scope>
			</dependency>
3.2、修改启动类

启动类需要继承SpringBootServletInitializer并重写configure方法

@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);
    }
}

四、使用Maven打Jar包

4.1、修改pom.xml
				<properties>
					<!-- 打包方式为Jar包 --!>
					<packaging>jar</packaging>
				</properties>
			
			   <plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- 配置启动类位置--!>
					<mainClass>com.example.springboot_mybatis_test.SpringbootMybatisTestApplication</mainClass>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			  </plugin>
4.2、进入项目中,调用命令行

打包前清理target并且打包:
mvn clean package
之后将在项目的target目录下得到可运行的jar包,运行jar包的方式:
java -jar xxxx.jar

使用idea新建springBoot+Gradle项目(超详细) 一、先说下IDEA 跟Eclipse在一些名词的区别 idea中的new project类似于eclipse中的workspace。 idea中的 module 则类似于eclipse中的 project ,即项目名。 图二中的1处Group为公司逆序域名,2处Arifact为项目名称,3处Type为项目的构建方式 Maven or Gradle or other。 图一中的 Spring... 阅读详情

相关推荐

Springboot使用Gradle打war包

1、添加 apply plugin: ‘war’ 2、 添加依赖 providedRuntime(‘org.springframework.boot:spring-boot-starter-tomcat’) 3、修改启动类: 继承SpringBootServletInitializer @SpringBootApplication @ImportAutoConfiguration({ AppAutoConfiguration.class, AppRestSwaggerConfiguration.clas

weixin_42551921的博客 1271

06、使用Gradle构建的项目如何打jar包和war包

打jar包 打开gradle之前构建的项目,随便写一个测试类里面打印一句话。 打开idea中gradle的窗口,选择build下的jar双击执行 执行完控制台显示成功,在当前项目的目录下会有生成一个build文件夹,里面有个libs目录打的jar包就在这里。 在idea自带的命令行中测试一下jar包是否能正常使用执行下面命令 java -classpath build/libs/groovy-1.0-SNAPSHOT.jar com.avatar.groovy.Test 正常输出 打war包 首先

moyanxiaoq的博客 7685

解决Gradle打War包时不能把所依赖的jar包打进来的问题,Springboot项目的Gradle构建问题

它基于DSL(领域特定语言)编写,该语言是用Groovy编写的,使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序,还支持多种语言和技术,例如C++、Python、Android等。当我们的Springboot项目进行构建时,我们希望打一个war包或者jar包,可以上传到服务器上去运行,可能会遇到以上报错,:Gradle可以通过插件机制轻松扩展,有着丰富的插件生态系统。:Gradle使用它的守护程序和增量构建技术来提高构建速度。:Gradle的DSL使你可以编写高度定制化的构建脚本。

十三月的博客 951

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.11 使用本地Tomcat部署war工程

【Gradle:新一代构建工具】学习笔记 2 Gradle与IDEA整合 2.11 使用本地Tomcat部署war工程

代码改变世界 1428

使用JAR命令打包JAR文件使用Maven打包使用Gradle打包打包Spring Boot应用

学习教程(传送门)本人详解作者:王文峰,参加过 优快云 2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯转载说明:务必注明来源(注明:作者:王文峰哦)使用JAR命令打包JAR文件使用Maven打包使用Gradle打包打包Spring Boot应用学习教程(传送门)学习教程(传送门)往期文章学习教程(传送门)1、掌握入门到进阶知识(

王大师企业官方博客 3425

Gradle构建(war) web项目示例

Gradle构建(war) web项目示例 Gradle在已有的web工程中使用gradle打war包

springboot的maven项目和gradle项目打包成jar包的方式

SpringBoot的maven项目和gradle项目打包成jar包的方式 当在本地编写好SpringBoot项目之后,想要将项目上传到服务器上,不可能将整个文件夹拖到服务器,这样会占据很多内存空间,因此我们更多都是打包成jar包再进行上传,springboot项目一般都分为两种类型,一种是maven ,另一种是gradle,下面就介绍这两种方式打包成jar包的方法与步骤。 一、maven 项目的...

tangyuer的博客 3057

遗传算法详解 附python代码实现

遗传算法 遗传算法是用于解决最优化问题的一种搜索算法。从名字来看,遗传算法借用了生物学里达尔文的进化理论:”适者生存,不适者淘汰“,将该理论以算法的形式表现出来就是遗传算法的过程。 问题引入 上面提到遗传算法是用来解决最优化问题的,下面我将以求二元函数: def F(x, y): return 3*(1-x)**2*np.exp(-(x**2)-(y+1)**2)- 10*(x/5 - x**3......

ha_ha_ha233的博客 22万+

IDEA使用Gradle构建SpringBoot项目工程

背景 最近在研究搭建spring源码调试环境时,接触到到gradle项目构建工具。由于之前习惯于maven项目的构建,故通过此文记录相关gradle的项目构建知识。 Gradle Gradle是一个构建工具,用于管理项目依赖和构建项目工程。Gradle抛弃了Maven的基于XML的繁琐配置,采用特定语言Groovy的配置,大大简化了构建代码的行数。 项目结构 Plugin Sample pluginManagement { repositories { gradlePluginPorta

我的博客 2278

紫光PG2L100H平台DDR3 IP核调试实战:从AXI接口到状态机设计的避坑指南

本文详细介绍了在紫光PG2L100H FPGA平台上调试DDR3 IP核的实战经验,重点解析了AXI接口的特殊行为和状态机设计的关键技巧。通过具体代码示例和调试方法,帮助开发者规避常见陷阱,实现高性能DDR3控制器设计,达到1.2GB/s的稳定带宽。

weixin_28717969的博客 219

C++ bitset总结

数据结构bitset 术语:某1位置位是置1,某一位复位是某一位清零。 文章目录数据结构bitset一、3种初始化方式二、位访问三、位操作四、 位集操作总结实战练习 一、3种初始化方式 bitset<32> tmp; //默认构造函数,默认全0。 bitset<32> tmp(-1); //从整形数构造 bitset<32> tmp("101"); //从包含1和0的字符串构造 二、位访问 bitset<32> tmp(256)

qq_43807092的博客 721

idea SpringBoot + Gradle 环境配置到项目打包

Gradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言C++、Java、GroovyKotlinScala和Swift,计划未来将支持更多的语言。

m0_74825488的博客 3594

C#【通用方法】字节数组添加、移除、获取的方法类(妙用List<byte>,开发中常用)

C#【通用方法】添加移除字节的方法类(妙用List,开发中常用)

星Yeah 的博客 3360

【springboot开发】Gradle VS Maven

AntMavenGradlegradle使用了Groovy作为配置文件,相较于maven的pom文件更加灵活Gradle和Maven都支持并行的项目构建和依赖解析。但是gradle的三个特点让gradle可以跑的比maven快上一点:增量构建构建缓存Gradle守护进程Gradle非常灵活,并且基于脚本。自定义构建将很容易在Gradle上完成。Gradle功能更强大。但是,有时候一个中小型的项目不需要它提供的大多数功能,则Maven可能就是最佳选择。

idiotyi的博客 2214

国债期货的日线趋势跟踪策略实现(基于backtrader框架)

通过backtrader框架,我们可以轻松地实现国债期货的日线趋势跟踪策略,并进行回测和验证。通过这种策略,我们可以尝试捕捉国债期货价格的短期趋势,并根据趋势的方向进行交易决策。backtrader提供了许多内置的指标、订单类型和其他功能,可以帮助你进一步优化和改进你的策略。它提供了丰富的工具和功能,使我们能够快速实现和验证我们的交易想法。方法中,我们根据当前价格和前一天的价格判断趋势的方向,并根据趋势的变化进行买入或卖出操作。然后,我们设置了初始资金和交易手续费,并将我们定义的策略。来跟踪每日的收盘价。

NisyPhilosophy的博客 404

ARINC429协议分析

如下表所示,ARINC429在发送一帧过程中,首先发送以START开始,以END结束,共发送32bits数据,其中0~7bits为Lable数据,9~8bits为SDI数据,10~28bits为数据,29~30bits为SSM,31bit为校验位End30292827262524校验位SSM2322212019181716DATA15141312111098SDI7654321Start。

5223

兴奋了:springboot 放弃maven,选择了gradle,gradle构建springboot

前言 很多人好奇maven用的好好的为什么切换到gradle? Spring Boot 团队给出的主要原因是,迁移至 Gradle 可以减少构建项目所花费的时间。 而 Gradle 的宗旨是减少构建工作量,它可以根据需要构建任何有变化的地方或者并行构建。当然,Spring Boot 团队也花了很多时间来尝试用 Maven 进行 并行构建,但因为构建 Spring Boot 项目的复杂性,最终失败了。 另外,Spring Boot 团队也看到了在其他 Spring 项目中使用 Gradle 以及并行构建所带来

penggerhe的博客 3133

从零到多智能体:Google Agent开发套件(ADK)入门指南

ADK促进自定义工具生产的能力是其优势之一。本质上,工具只是一个带有描述性文档字符串的Python函数。

独立开发,substack顶级编辑 2492

idea使用gradle教程 (idea gradle springboot)2024

在gradle的init.d目录下新建 init.gradle 文件,加入如下配置。Gradle需要JDK的支持,安装Gradle之前需要提前安装JDK8及以上版本。----windows 环境-----------点击 idea 右边的 这个gralde 按钮。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

chaoren499的专栏 1万+

SAP SEGW 事物码里的 Function Import

开放数据协议(OData)包括标准的 CRUD (创建、检索、更新和删除)操作,这些操作映射到 HTTP 方法的 POST、GET、PUT/MERGE 和 Delete 几类。此外,OData还支持进一步的服务操作:,这些操作可以由HTTP方法GET或POST调用,用于处理不能映射到标准 CRUD 操作的任何内容。通过在数据模型中创建 ,可以在 service Builder 中实现此类额外的服务操作。例如,您可以为以下自定义操作创建函数导入:Work Item confirmation检查航班的可用性虽然

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 997

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

gradle--使用Idea打包SpringBoot项目--方法/实例

gradle是后端开发常用的构建工具,本文用实例介绍如何使用maven打包SpringBoot项目。

IT利刃出鞘的博客 9004

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Gradle(四)Maven 项目迁移 Gradle 项目实践

Gradle(四)Maven 项目迁移 Gradle 项目实践

ACGkaka的博客 2082

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

spring boot打包原理,maven及gradle下的构建解析

使用gradle辅助解析spring boot启动机制1. 概述2. gradle简述 1. 概述 最近在心血来潮,想研究下除了maven之外的部署及依赖管理框架,这就接触到了gradle。在研究gradle配置及部署的同时,发现gradle具备可定制的灵活配置方式以及可重写的编译发布模式,基于对spring boot启动机制及运行模式的了解,两相结合阐述一些较为本质的问题。 2. gradle简述 gradle是一种新兴的构建工具,与maven类似但又在概念上有着优势。gradle基于groovy实现了一

u014534566的博客 1994

【gradle】MAC下用gradle构建部署springboot项目

MAC下用gradle构建部署springboot项目

YiQieFuCong的博客 1万+

SpringBoot+gradle项目中的两种jar包(依赖包和可运行包)及如何在Idea中打包

SpringBoot项目中有两种jar包,一种是由gradle(maven)自动构建工具引入的第三方jar包(依赖包) 另一种是SpringBoo项目打的可以执行的jar包(可运行包) 可以通过 java -jar 包名.jar 运行。 之前没有专门研究过这两者的区别,直到最近搭建自己的maven私服,将SpringBoot项目打成jar包作为其他项目的依赖包时候报找...

weixin_39080216的博客 8805
上一篇: Git学习(2)-分支策略和工作流
下一篇: SpringBoot学习笔记(11)-配置拦截器
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

BoringRong

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

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

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

打赏作者

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

抵扣说明:

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

余额充值