当前位置: 首页 > news >正文

IntelliJ IDEA流行的构建工具——Gradle

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。

如今构建工具是一切项目的重要组成部分,而IntelliJ IDEA已与大多数构建工具集成,目前流行的构建工具是Gradle。在本文中,我们简要介绍一下它与IntelliJ IDEA的集成历史以及IDE内实现的委托流程。

IntelliJ IDEA v2023.1正式版下载

起点

IntelliJ IDEA 的上市时间比其他构建工具都要早,多年来一直提供其原生构建系统并取得了巨大成功。 IntelliJ IDEA 构建系统始终是编译、运行测试和打包到 JAR 等任务的最佳选择。

开发者通常主要关注编译和运行测试,因此构建流程的快速反馈周期至关重要,而我们则擅长执行 JUnit 和 TestNG 测试以及增量编译。

Gradle之前

Maven 推出时表现出强大的项目依赖项管理能力,我们利用了它的项目结构,并将下载和解析依赖项委托给 Maven(但将构建流程留给 IntelliJ IDEA)。

我们能够在 IntelliJ IDEA 构建系统中复制 Maven 的构建流程,基于 Maven 项目模型,IntelliJ IDEA 可以用最少的额外步骤构建项目。同时我们开发了有效检索资源处理信息的机制,覆盖从 pom.xml 生成 MANIFEST.mf 文件,进一步增强了构建流程。

然后,我们将构建流程的结果应用到执行测试的原生流程。

借助这项改进,我们得以涵盖使用IntelliJ IDEA成功构建Maven项目的所有必要场景。

继续对Maven项目使用这种设置:从Maven检索必要信息,使用原生IntelliJ IDEA机制构建和启动项目,甚至对Spring Boot和 Micronaut等流行工具也是如此。

集成Gradle

当Gradle在市场上推出时,它让用户能够更好地自定义构建流程并为其添加更多功能。

当时决定开始采用与Maven类似的方式时,这意味着让 Gradle 处理依赖项和检索必要信息,而 IntelliJ IDEA 将编译代码、运行测试和构建项目。

不过Gradle项目模型似乎有些过于灵活,您可以在构建脚本中使用不同的源集或语言,例如Groovy、Scala或Kotlin。 另外,在构建脚本中还可以编写命令式代码,为构建系统提供所需行为和设置的直接指令。

例如可以在运行之前或测试运行之前启动数据库,另外与包含静态配置的Maven相比,Gradle构建脚本允许在资源处理期间执行任意代码,使用IntelliJ IDEA 功能很难重现此类配置。

显然在标准操作方面表现出色,但自定义操作,例如处理资源和其他自定义任务,对我们来说相当难以控制和维护,最重要的是难以在 IntelliJ IDEA 构建系统中复制。

因此,我们决定将测试运行委托给 Gradle:

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

当您运行测试时,Gradle test任务将与属于Gradle构建周期的其他任务一起执行,如下所示:

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

此外IntelliJ IDEA 还提供了额外功能,举例来说,您需要运行的测试可能分布在不同源集中。 集成测试在一个源集中,而功能测试则在另一个源集中。

IntelliJ IDEA 能够正确确定特定测试文件的测试任务及其位置,确保相关测试有效执行。

此外IntelliJ IDEA还提供测试执行级别的信息 – 方法、类或软件包,例如Gradle 默认执行源集中的所有测试。

但是IntelliJ IDEA会应用筛选模式,并在 Run(运行)工具窗口中显示消息,告知您执行测试的确切位置:

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

总体而言,Gradle 的测试委托相当成功。

下一步自然是将 Build(构建)和 Run(运行)操作也委托给 Gradle,最终委托成为默认选择。

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

现在,在应用程序中使用 Run(运行)操作时,它会在 Gradle 上下文中使用并动态完成。

类似于现有 Gradle 应用程序插件,我们正在创建运行主类的 JavaExec 类型的任务,这可以确保应用程序运行配置的最大正确性。

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

在委托模式下触发 Build(构建)时,IntelliJ IDEA 会根据项目中被修改的模块在 Gradle 中生成需要执行的命令列表,您可以在BuildOutput中查看此信息:

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

IntelliJ IDEA 还可以检测在不同模块中修改的文件并仅构建修改的部分。

【热门推荐】IntelliJ IDEA流行的构建工具——Gradle

目前,有两种委托模式可供选择:Gradle 和 IntelliJ IDEA。

  • Gradle:当流程委托给 Gradle 时,它比我们的原生构建系统稍慢,并且存在少量开销。 有时,在委托模式下,Gradle 守护进程需要重新运行。
    此外,Gradle 会保留其生命周期进程,重新运行 Gradle 模型并检查构建脚本及其文件系统,即使存在由 IntelliJ IDEA 编译的代码。
  • IntelliJ IDEA:如果 Gradle 项目中没有复杂的设置,可以使用 IntelliJ IDEA 加快构建流程。

还要注意在编译流程中支持注解处理,不过当代码由IntelliJ IDEA 编译时,有一些边缘情况很难处理,例如注解处理程序在 Gradle 子项目中定义的情况。

这就是我们现在所处的阶段,仍在尝试以委托模式运行Spring和Micronaut运行配置,并在IDE中持续改进Gradle委托流程。

相关文章:

IntelliJ IDEA流行的构建工具——Gradle

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 如…...

nacos源码打包及相关配置

nacos 本地下载后,需要 install 下: mvn clean install -Dmaven.test.skiptrue -Dcheckstyle.skiptrue -Dpmd.skiptrue -Drat.skiptruenacos源码修改后,重新打包生成压缩包命令:在 distribution 目录中运行: mvn -Pr…...

【机器学习】Multiple Variable Linear Regression

Multiple Variable Linear Regression 1、问题描述1.1 包含样例的X矩阵1.2 参数向量 w, b 2、多变量的模型预测2.1 逐元素进行预测2.2 向量点积进行预测 3、多变量线性回归模型计算损失4、多变量线性回归模型梯度下降4.1 计算梯度4.2梯度下降 首先,导入所需的库 im…...

自己创建的类,其他类中使用错误

说明:自己创建的类,在其他类中创建,报下面的错误(Cannot resolve sysmbol ‘Redishandler’); 解决:看下是不是漏掉了包名 加上包名,问题解决;...

Packet Tracer – 使用 TFTP 服务器升级思科 IOS 映像。

Packet Tracer – 使用 TFTP 服务器升级思科 IOS 映像。 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 F0/0 192.168.2.1 255.255.255.0 不适用 R2 G0/0 192.168.2.2 255.255.255.0 不适用 S1 VLAN 1 192.168.2.3 255.255.255.0 192.168.2.1 TFTP …...

并查集基础

一、概念及其介绍 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。 并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根&#xf…...

C# 循环等知识点

《1》程序:事先写好的指令(代码) using 准备工具 namespace 模块名称 { class 子模块{ static void main()//具体事项 { 代码 } } } 《2》变量:内存里的一块空间,用来存储数据常用的有小数,整数&#xff0c…...

1.1.2 SpringCloud 版本问题

目录 版本标识 版本类型 查看对应版本 版本兼容的权威——官网: 具体的版本匹配支持信息可以查看 总结 在将Spring Cloud集成到Spring Boot项目中时,确保选择正确的Spring Cloud版本和兼容性是非常重要的。由于Spring Cloud存在多个版本,因此…...

Android AIDL 使用

工程目录图 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:LearnAIDL代码:AIDLClient. 参考文献 安卓开发学习之AIDL的使用android进阶-AIDL的基本使用Android AIDL 使用使用 AIDL …...

MongoDB——命令详解

db.fruit.remove({name:apple})//删除a为apple的记录db.fruit.remove({})//删除所有的记录db.fruit.remove()//报错 MongoDB使用及命令大全(一)_mongodb 删除命令_言不及行yyds的博客-CSDN博客...

机器学习深度学习——多层感知机的简洁实现

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——多层感知机的从零开始实现 📚订阅专栏:机器学习&&深度学习 希望文章对你…...

笙默考试管理系统-MyExamTest(21)

笙默考试管理系统-MyExamTest(21) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 六、 笙默考试管理系统…...

Redis高可用之主从复制、哨兵、cluster集群

一、Redis主从复制1.1 Redis主从复制的概念1.2 Redis主从复制作用1.3 主从复制流程1.4 搭建 Redis 主从复制 二、Redis哨兵模式2.1 概述2.2 哨兵模式原理2.3 哨兵模式的作用2.4 哨兵结构2.5 故障转移机制2.6 主节点的选举2.7 搭建Redis 哨兵模式 三、Redis 群集模式3.1 概述3.2…...

【需求响应DR】一种新的需求响应机制DR-VCG研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【Django学习】(十六)session_token认证过程与区别_响应定制

一、认识session与token 这里就直接引用别人的文章,不做过多说明 网络应用中session和token本质是一样的吗,有什么区别? - 知乎 二、token响应定制 在全局配置表中配置 DEFAULT_AUTHENTICATION_CLASSES: [# 指定jwt Token认证rest_framew…...

ai创作系统CHATGPT支持GPT4.0+支持ai绘画(MJ)+ai绘画(SD)集合几百种AI智能工具

生成的AI绘画 非常的奈斯 包括GPT...

linux安装mysql

linux快速安装mysql 安装之前检测系统是否有自带的MySQL #检查是否安装过MySQL rpm -qa | grep mysql #检查是否存在 mariadb 数据库(内置的MySQL数据库),有则强制删除 rpm -qa | grep mariadb #强制删除 rpm -e --nodeps mariadb-libs-5.5…...

mysql主从复制原理及应用

一、主从复制简介 MySQL主从复制是一种异步、基于日志的、单向的数据库复制技术,它通过在主服务器上启用二进制日志并将其发送给一个或多个从服务器,实现了从服务器与主服务器之间的数据同步。主服务器将所有的数据库操作记录到二进制日志中&#xff0c…...

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下: 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …...

el-upload上传图片和视频,支持预览和删除

话不多说&#xff0c; 直接上代码&#xff1a; 视图层&#xff1a; <div class"contentDetail"><div class"contentItem"><div style"margin-top:5px;" class"label csAttachment">客服上传图片:</div><el…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...