IdeaProject

API 文档IdeaProject

用于微调 IDEA 插件的项目详情(*.ipr 文件)。

包含所有可能属性的混合用法示例。通常您无需直接配置 IDEA module,因为 Gradle 会为您配置。

import org.gradle.plugins.ide.idea.model.*

plugins {
    id 'java'
    id 'idea'
}

idea {
  project {
    //if you want to set specific jdk and language level
    jdkName = '1.6'
    languageLevel = '1.5'

    //you can update the source wildcards
    wildcards += '!?*.ruby'

    //you can configure the VCS used by the project
    vcs = 'Git'

    //you can change the modules of the *.ipr
    //modules = project(':some-project').idea.module

    //you can change the output file
    outputFile = new File(outputFile.parentFile, 'someBetterName.ipr')

    //you can add project-level libraries
    projectLibraries << new ProjectLibrary(name: "my-library", classes: [new File("path/to/library")])
  }
}

对于处理边缘情况,用户可以在生成的 XML 文件上执行高级配置。也可以通过 beforeMerged 和 whenMerged 闭包来影响 IDEA 插件合并现有配置的方式。

beforeMerged 和 whenMerged 闭包接收 Project 对象

高级配置示例

plugins {
    id 'java'
    id 'idea'
}

idea {
  project {
    ipr {
      //you can tinker with the output *.ipr file before it's written out
      withXml {
        def node = it.asNode()
        node.appendNode('iLove', 'tinkering with the output *.ipr file!')
      }

      //closure executed after *.ipr content is loaded from existing file
      //but before gradle build information is merged
      beforeMerged { project ->
        //you can tinker with Project
      }

      //closure executed after *.ipr content is loaded from existing file
      //and after gradle build information is merged
      whenMerged { project ->
        //you can tinker with Project
      }
    }
  }
}

属性

属性描述
ipr

参见 IdeaProject.ipr(org.gradle.api.Action)

jdkName

用于定义项目 SDK 的 Java 版本。

languageLevel

此项目要使用的默认 Java 语言级别。

modules

ipr 文件的 modules。

outputFile

输出 *.ipr

projectLibraries

要添加到 IDEA 项目的项目级库。

targetBytecodeVersion

此项目要使用的目标字节码版本。

vcs

项目的 VCS。

wildcards

通配符资源模式。

方法

方法描述
ipr(action)

启用高级配置,例如修改输出 XML 或影响现有 *.ipr 内容与 Gradle 构建信息合并的方式。

脚本块

描述
ipr

启用高级配置,例如修改输出 XML 或影响现有 *.ipr 内容与 Gradle 构建信息合并的方式。

属性详情

String jdkName

用于定义项目 SDK 的 Java 版本。

参见 IdeaProject 文档中的示例

使用 idea 插件时的默认值
用于运行 Gradle 的 Java 版本,例如 '1.6'
使用 ideajava 插件时的默认值
用于运行 Gradle 的 Java 版本,例如 '1.6'

IdeaLanguageLevel languageLevel

此项目要使用的默认 Java 语言级别。

通常不建议修改此值。建议您为 Gradle 项目设置 sourceCompatibilitytargetCompatibility,这使您能够完全控制 Gradle 项目中的语言级别,并且意味着 Gradle 和 IDEA 在编译时将使用相同的设置。

未明确设置时,此值将计算为该 Idea 项目所有 Idea 模块的最大语言级别。

使用 idea 插件时的默认值
JavaVersion.JAVA_1_6
使用 ideajava 插件时的默认值
project.sourceCompatibility

List<IdeaModule> modules

ipr 文件的 modules。

参见 IdeaProject 文档中的示例

使用 idea 插件时的默认值
project.allprojects.idea.module

File outputFile

输出 *.ipr

参见 IdeaProject 文档中的示例。

使用 idea 插件时的默认值
${project.projectDir}/${project.name}.ipr

Set<ProjectLibrary> projectLibraries

要添加到 IDEA 项目的项目级库。

使用 idea 插件时的默认值
[] (使用 scala-base 插件时为 [scala-library])
使用 ideajava 插件时的默认值
[] (使用 scala-base 插件时为 [scala-library])

JavaVersion targetBytecodeVersion

此项目要使用的目标字节码版本。

通常不建议修改此值。建议您为 Gradle 项目设置 sourceCompatibilitytargetCompatibility,这使您能够完全控制 Gradle 项目中的语言级别,并且意味着 Gradle 和 IDEA 在编译时将使用相同的设置。

未明确设置 languageLevel 时,此值将计算为该 Idea 项目所有 Idea 模块的最大目标字节码版本。

使用 idea 插件时的默认值
JavaVersion.JAVA_1_6
使用 ideajava 插件时的默认值
所有 Java 子项目中的最高 project.targetCompatibility 值,如果未找到 Java 项目,则为 JavaVersion.JAVA_1_6

String vcs

项目的 VCS。

值与 IDEA 的“Version Control”偏好设置窗口中使用的值相同(例如,“Git”,“Subversion”)。

参见 IdeaProject 文档中的示例。

Set<String> wildcards

通配符资源模式。

参见 IdeaProject 文档中的示例。

使用 idea 插件时的默认值
['!?*.java', '!?*.groovy']

方法详情

void ipr(Action<? super XmlFileContentMerger> action)

启用高级配置,例如修改输出 XML 或影响现有 *.ipr 内容与 Gradle 构建信息合并的方式。

参见 IdeaProject 文档中的示例

脚本块详情

ipr { }

启用高级配置,例如修改输出 XML 或影响现有 *.ipr 内容与 Gradle 构建信息合并的方式。

参见 IdeaProject 文档中的示例

委托给
来自 iprXmlFileContentMerger