IdeaProject

API 文档IdeaProject

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

结合所有可能属性的使用示例。通常,您不必直接配置 IDEA 模块,因为 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 文件的模块。

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 文件的模块。

请参阅 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 的“版本控制”首选项窗口中使用的值相同(例如 '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 的文档中的示例

委托给
XmlFileContentMerger,来自 ipr