当前位置: 首页 > 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…...

别再手动敲命令了!用Ansible一键搞定Harbor 2.14.0高可用部署(附完整Playbook)

Ansible自动化部署Harbor 2.14.0高可用集群实战指南 在容器化技术普及的今天&#xff0c;企业级私有镜像仓库Harbor已成为DevOps工具链中不可或缺的一环。然而&#xff0c;传统的手动部署方式不仅耗时费力&#xff0c;更难以保证多环境的一致性。本文将展示如何通过Ansible实现…...

5步快速上手:百度网盘直链解析工具实现高速下载

5步快速上手&#xff1a;百度网盘直链解析工具实现高速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的下载速度限制而烦恼吗&#xff1f;百度网盘直链解…...

Phi-4-mini-reasoning快速上手:3步完成vLLM服务部署+Chainlit前端验证

Phi-4-mini-reasoning快速上手&#xff1a;3步完成vLLM服务部署Chainlit前端验证 1. 模型简介 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员&#xff0c;它经过专门微调以提升数…...

5个关键步骤:OpenCore Legacy Patcher旧Mac设备系统升级全攻略

5个关键步骤&#xff1a;OpenCore Legacy Patcher旧Mac设备系统升级全攻略 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果公司对旧款Mac设备的系统支…...

AI原生应用领域链式思考:构建高效应用架构

AI原生应用领域链式思考&#xff1a;构建高效应用架构 关键词&#xff1a;AI原生应用、链式思考、应用架构、大模型协同、上下文管理 摘要&#xff1a;本文从AI原生应用的核心特征出发&#xff0c;结合"链式思考"这一关键设计模式&#xff0c;系统讲解如何构建高效能…...

Hunyuan-MT 7B一键部署教程:基于Git实现快速环境搭建

Hunyuan-MT 7B一键部署教程&#xff1a;基于Git实现快速环境搭建 想试试那个在国际翻译比赛里拿了30个第一的Hunyuan-MT-7B模型吗&#xff1f;你可能在网上看到过它的介绍&#xff0c;支持几十种语言&#xff0c;翻译效果据说很惊艳。但一看到“本地部署”、“环境配置”这些词…...

PowerBI进阶:除了DATEADD,这3种方法也能玩转同比环比(附场景选择指南)

PowerBI时间智能函数深度对比&#xff1a;突破DATEADD局限的实战指南 当你已经能熟练使用DATEADD计算同比环比&#xff0c;却发现报表加载速度越来越慢&#xff0c;或是遇到非标准财年分析需求时&#xff0c;是时候重新审视PowerBI的时间智能函数工具箱了。本文将带你深入剖析四…...

一站式屏幕神器eSearch:如何5分钟打造你的智能工作流?

一站式屏幕神器eSearch&#xff1a;如何5分钟打造你的智能工作流&#xff1f; 【免费下载链接】eSearch 截屏 离线OCR 搜索翻译 以图搜图 贴图 录屏 万向滚动截屏 屏幕翻译 Screenshot Offline OCR Search Translate Search for picture Paste the picture on the screen Scree…...

Power BI 网页数据抓取实战:以新浪外汇为例,教你5分钟搞定动态表格导入与清洗

Power BI 网页数据抓取实战&#xff1a;新浪外汇动态表格导入与清洗全流程解析 外汇市场瞬息万变&#xff0c;作为业务分析师&#xff0c;每天手动记录汇率数据既耗时又容易出错。今天我们就以新浪财经外汇数据为例&#xff0c;手把手教你用Power BI实现5分钟自动化抓取清洗的完…...

告别混乱!用PyQt5模块化设计打造你的工业上位机(附完整源码与两种传值方式详解)

工业级PyQt5模块化开发实战&#xff1a;从架构设计到数据交互的完整指南 在工业自动化与测控领域&#xff0c;上位机软件往往需要集成数据采集、实时监控、设备控制等复杂功能。传统开发方式容易导致代码臃肿、维护困难——按钮事件与业务逻辑纠缠不清&#xff0c;数据流向如迷…...