网站后台管理系统设计,摄影设计师是干嘛,徐州工作招聘信息网,北京国家建设部网站IntelliJ IDEA#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。
如…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 当您运行测试时Gradle test任务将与属于Gradle构建周期的其他任务一起执行如下所示 此外IntelliJ IDEA 还提供了额外功能举例来说您需要运行的测试可能分布在不同源集中。 集成测试在一个源集中而功能测试则在另一个源集中。
IntelliJ IDEA 能够正确确定特定测试文件的测试任务及其位置确保相关测试有效执行。
此外IntelliJ IDEA还提供测试执行级别的信息 – 方法、类或软件包例如Gradle 默认执行源集中的所有测试。
但是IntelliJ IDEA会应用筛选模式并在 Run运行工具窗口中显示消息告知您执行测试的确切位置 总体而言Gradle 的测试委托相当成功。
下一步自然是将 Build构建和 Run运行操作也委托给 Gradle最终委托成为默认选择。 现在在应用程序中使用 Run运行操作时它会在 Gradle 上下文中使用并动态完成。
类似于现有 Gradle 应用程序插件我们正在创建运行主类的 JavaExec 类型的任务这可以确保应用程序运行配置的最大正确性。 在委托模式下触发 Build构建时IntelliJ IDEA 会根据项目中被修改的模块在 Gradle 中生成需要执行的命令列表您可以在BuildOutput中查看此信息 IntelliJ IDEA 还可以检测在不同模块中修改的文件并仅构建修改的部分。 目前有两种委托模式可供选择Gradle 和 IntelliJ IDEA。
Gradle当流程委托给 Gradle 时它比我们的原生构建系统稍慢并且存在少量开销。 有时在委托模式下Gradle 守护进程需要重新运行。 此外Gradle 会保留其生命周期进程重新运行 Gradle 模型并检查构建脚本及其文件系统即使存在由 IntelliJ IDEA 编译的代码。IntelliJ IDEA如果 Gradle 项目中没有复杂的设置可以使用 IntelliJ IDEA 加快构建流程。
还要注意在编译流程中支持注解处理不过当代码由IntelliJ IDEA 编译时有一些边缘情况很难处理例如注解处理程序在 Gradle 子项目中定义的情况。
这就是我们现在所处的阶段仍在尝试以委托模式运行Spring和Micronaut运行配置并在IDE中持续改进Gradle委托流程。