【idea实用系列7】Gradle构建项目中IDEA插件

7 篇文章 0 订阅

【idea实用系列7】Gradle构建项目中IDEA插件

使用

要使用IDEA插件,请在构建脚本中包含以下内容:

plugins {
    id 'idea'
}

IDEA插件会为项目添加一些任务。idea任务为项目生成一个IDEA模块文件。当项目是根项目时,idea任务还会生成一个IDEA项目和工作空间。IDEA项目包括Gradle构建中每个项目的模块。

当项目是根项目时,IDEA插件还会添加一个openIdea任务。此任务生成IDEA配置文件并在IDEA中打开结果。这意味着您只需从根项目运行./gradlew openIdea即可方便地生成并打开IDEA项目。

IDEA插件还为项目添加了**cleanIdea任务**。该任务将删除已生成的文件(如果存在)。

任务

IDEA插件向项目添加了以下任务。请注意,clean任务不依赖于cleanIdeaWorkspace任务。这是因为工作空间通常包含许多用户特定的临时数据,并且不希望在IDEA之外对其进行操作。

  • idea:依赖:ideaProjectideaModuleideaWorkspace。生成所有IDEA配置文件。
  • openIdea:依赖:idea。生成所有IDEA配置文件并在IDEA中打开项目。
  • cleanIdea:依赖:cleanIdeaProjectcleanIdeaModule。删除所有IDEA配置文件。
  • cleanIdeaProject:删除IDEA项目文件。
  • cleanIdeaModule:删除IDEA模块文件。
  • cleanIdeaWorkspace:删除IDEA工作空间文件。
  • ideaProject:生成.ipr文件。仅添加到根项目。
  • ideaModule生成.iml文件
  • ideaWorkspace:生成.iws文件。仅添加到根项目。

配置

该插件添加了一些配置选项,可以自定义生成的IDEA项目和模块文件。这些配置选项既可以是模型属性,也可以是直接修改生成文件的较低级别机制。例如,您可以添加源目录和资源目录,以及注入自己的XML片段。前一种类型的配置会受到IDEA导入功能的支持,而后者则不受支持。

以下是您可以使用的配置属性:

  • ideaIdeaModel。顶级元素,用于以DSL友好的方式配置IDEA插件。
  • idea.projectIdeaProject。允许配置项目信息。
  • idea.moduleIdeaModule。允许配置模块信息。
  • idea.workspaceIdeaWorkspace。允许配置工作区XML。

请点击类型链接查看如何使用这些配置属性的示例。

自定义生成的文件

IDEA插件提供了钩子和行为,以更加灵活和详细地自定义生成的内容。此外,withXml钩子是修改工作空间文件的唯一实际方法。

这一节讨论的技术与IDEA的导入功能不兼容

任务会识别现有的IDEA文件,并将它们与生成的内容合并。

合并

现有IDEA文件中与生成内容目标相同的部分将被修改或覆盖,具体取决于特定部分。其余部分将保持不变。

禁用合并并进行完全覆盖

要完全重写现有的IDEA文件,请执行带有相应生成任务的clean任务,例如"gradle cleanIdea idea"(按照顺序执行)。如果要使此成为默认行为,请在构建脚本中添加"tasks.idea.dependsOn(cleanIdea)"。这样就不需要显式执行clean任务了。

也可以对插件将生成的个别文件使用此策略。例如,可以通过"gradle cleanIdeaModule ideaModule"来完成".iml"文件的操作。

钩入生成生命周期

该插件提供了用于表示Gradle生成的元数据文件部分的对象模型。生成生命周期如下:

  1. 读取文件;如果文件不存在,则使用Gradle提供的默认版本。
  2. 执行beforeMerged钩子,使用表示现有文件的领域对象。
  3. 将现有内容与从Gradle构建中推断出的配置或在eclipseDSL中明确定义的配置合并。
  4. 执行whenMerged钩子,使用表示将要持久化的文件内容的领域对象。
  5. 执行withXml钩子,使用将要持久化的XML的原始表示形式。
  6. 持久化最终的XML。

下面是每种模型类型使用的领域对象:

  • IdeaProject

    • beforeMerged { Project arg -> … }
    • whenMerged { Project arg -> … }
    • withXml { XmlProvider arg -> … }
  • IdeaModule

    • beforeMerged { Module arg -> … }
    • whenMerged { Module arg -> … }
    • withXml { XmlProvider arg -> … }
  • IdeaWorkspace

    • beforeMerged { Workspace arg -> … }
    • whenMerged { Workspace arg -> … }
    • withXml { XmlProvider arg -> … }
部分重写现有内容

"完全重写"会导致丢失所有现有内容,从而丢失在IDE中直接进行的任何更改。beforeMerged钩子使得可以仅覆盖现有内容的某些部分。以下示例从模块领域对象中删除了所有现有依赖项:

build.gradle
idea.module.iml {
    beforeMerged { module ->
        module.dependencies.clear()
    }
}

生成的模块文件将只包含由Gradle生成的依赖项条目,而不包含原始文件中可能存在的任何其他依赖项条目。(对于依赖项条目,这也是默认行为。)模块文件的其他部分将保持不变或合并。在项目文件中可以执行相同的操作:

build.gradle
idea.project.ipr {
    beforeMerged { project ->
        project.modulePaths.clear()
    }
}
修改完全填充的领域对象

whenMerged钩子允许您操纵完全填充的领域对象。通常,这是自定义IDEA文件的首选方法。以下示例导出了IDEA模块的所有依赖项:

build.gradle
idea.module.iml {
    whenMerged { module ->
        module.dependencies*.exported = true
    }
}
修改XML表示形式

withXml钩子允许您在文件写入磁盘之前操纵内存中的XML表示形式。虽然Groovy的XML支持和Kotlin的扩展函数很强大,但这种方法比操纵领域对象更不方便。作为回报,您可以完全控制生成的文件,包括领域对象未建模的部分。

以下示例演示了如何自定义XML:

build.gradle
idea.project.ipr {
    withXml { provider ->
        provider.node.component
                .find { it.@name == 'VcsDirectoryMappings' }
                .mapping.@vcs = 'Git'
    }
}
识别附加的测试目录

与Java插件一起使用此插件时,在添加其他源集后,您可能希望通知IDEA它们包含的是测试源而不是生产源,以便IDE可以适当地处理这些目录。可以通过使用该插件的Module块来实现。例如:

build.gradle
sourceSets {
    intTest {
        java {
            srcDirs = ['src/integration']
        }
    }
}

idea {
    module {
        testSources.from(sourceSets.intTest.java.srcDirs)
    }
}

使用JVM Test Suite插件时,测试源将自动正确识别。

其他事项

生成的IDEA文件中的依赖路径是绝对路径。如果手动定义了指向Gradle依赖缓存的路径变量,则IDEA会自动将绝对依赖路径替换为此路径变量。您可以通过"idea.pathVariables"属性配置此路径变量,以便在不创建重复项的情况下进行正确合并。

参考链接

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在使用Gradle构建Spring Boot项目之前,需要确保已经安装了Gradle和相应的Java SDK。接下来,遵循以下步骤创建项目工程: 1.首先创建一个文件夹,并在此文件夹创建一个build.gradle文件。 2.在build.gradle文件添加以下代码块来声明Spring Boot插件: ``` plugins { id 'org.springframework.boot' version '2.2.4.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' } ``` 3.接着添加以下代码块来声明项目的依赖: ``` dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'mysql:mysql-connector-java' } ``` 4.运行Gradle来下载和安装项目所需的依赖: ``` gradle clean build ``` 5.创建一个Spring Boot应用程序: ``` package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 6.构建并运行项目: ``` gradle bootRun ``` 以上就是使用Gradle构建Spring Boot项目工程的详细教程。这种方法可以提高开发效率,并将代码与项目依赖性集成在一起。 ### 回答2: Gradle是一款开源的自动化构建工具,是目前最为流行的Java项目自动化构建工具之一,可以帮助我们管理项目依赖、执行构建任务、自动化测试等。 Spring Boot是一个快速开发应用程序的框架,几乎可以零配置使用,可以轻松地构建Web应用程序并且支持很多种开发方式。使用Gradle构建Spring Boot项目工程,可以快速构建Spring Boot应用程序。 以下是详细步骤: 一、创建Spring Boot项目 在开始使用Gradle构建Spring Boot项目之前,首先需要创建Spring Boot项目。可以使用Spring官方提供的Spring Initializr工具来创建Spring Boot项目。 具体步骤如下: 1.访问Spring Initializr网站 https://start.spring.io/ 2.选择项目的基本配置信息,包括项目类型、项目名称、项目包名、项目版本号等。 3.选择项目依赖,例如选Web、JPA、MySQL等依赖。 4.点击“Generate”按钮生成Spring Boot项目,将项目下载到本地电脑上。 二、配置Gradle 1.在项目根目录下创建build.gradle文件, 具体内容如下: //设置Gradle版本 buildscript { ext { springBootVersion = '2.4.1' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } //设置依赖项 apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.xxx.xxx'//修改为自己的工程名称 version = '0.0.1-SNAPSHOT'//工程版本号 sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'mysql:mysql-connector-java' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 2.保存build.gradle文件后,在终端执行gradle build命令即可构建项目,生成的工程目录如下: /build /classes /generated /libs /reports /resources /tmp /bootJar 三、运行Spring Boot应用程序 1.在build.gradle文件添加以下配置信息: bootRun { sourceResources = sourceSets.main.output.resourcesDir } 2.在终端执行gradle bootRun命令,即可运行Spring Boot应用程序,在浏览器输入http://localhost:8080/hello进行访问。 四、打包应用程序 1.在build.gradle文件添加以下配置信息,用于打包应用程序: bootJar { archiveName = 'app.jar'// 修改生成的文件名 } 2.在终端执行gradle bootJar命令进行打包,生成的应用程序在工程目录下的build/libs文件夹,即可部署到服务器上进行使用。 五、总结 通过Gradle构建Spring Boot项目,可以帮助我们更方便地管理项目依赖,执行构建任务,自动化测试等,从而提高项目开发效率和质量。希望本文对你有所帮助。 ### 回答3: 构建Spring Boot项目工程时,使用Gradle是一个较好的选择。因为Gradle是一个极其强大的构建工具,可以快速方便地构建出高效稳定的项目。下面是使用Gradle构建Spring Boot项目工程的详细教程: 第一步:创建新的Gradle项目 在创建Gradle项目时,需要确保使用的Gradle版本是5.0及以上版本。 第二步:添加依赖 在构建Spring Boot项目的过程,我们需要导入一些必要的依赖,比如web依赖。可以在build.gradle文件添加以下内容: dependencies { compile('org.springframework.boot:spring-boot-starter-web') } 第三步:添加Spring Boot插件 可以通过在build.gradle文件添加以下内容,来将spring-boot插件添加到项目: plugins { id 'org.springframework.boot' version '2.6.0' } 第四步:添加源代码 src/main下新建java目录,java目录下新建包名 com.zxy.springboot ,随后在这个包下新建一个名为 SpringBootDemoApplication.java 的文件; 然后在 SpringBootDemoApplication.java 添加如下内容: package com.zxy.springboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoApplication.class, args); } } 第五步:运行程序 在build.gradle所在目录,运行以下命令: gradle bootRun 至此,构建Spring Boot项目工程的详细教程已经介绍完毕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BigDataMLApplication

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

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

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

打赏作者

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

抵扣说明:

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

余额充值