IdeaProject

API Documentation:IdeaProject

Enables fine-tuning project details (*.ipr file) of the IDEA plugin.

Example of use with a blend of all possible properties. Typically you don't have configure IDEA module directly because Gradle configures it for you.

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

apply plugin: 'java'
apply plugin: '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 change the modules of the the *.ipr
    //modules = project(':someProject').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 Path("path/to/library")])
  }
}

For tackling edge cases users can perform advanced configuration on resulting XML file. It is also possible to affect the way IDEA plugin merges the existing configuration via beforeMerged and whenMerged closures.

beforeMerged and whenMerged closures receive Project object

Examples of advanced configuration:

apply plugin: 'java'
apply plugin: '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
      }
    }
  }
}

Properties

PropertyDescription
ipr

See IdeaProject.ipr{}

jdkName

The java version used for defining the project sdk.

languageLevel

The java language level of the project. Pass a valid Java version number (e.g. '1.5') or IDEA language level (e.g. 'JDK_1_5').

modules

A ConventionProperty that holds modules for the ipr file.

outputFile

Output *.ipr

projectLibraries
Incubating

The project-level libraries to be added to the IDEA project.

wildcards

The wildcard resource patterns.

Methods

No methods

Script blocks

BlockDescription
ipr

Enables advanced configuration like tinkering with the output XML or affecting the way existing *.ipr content is merged with Gradle build information.

Property details

String jdkName

The java version used for defining the project sdk.

See the examples in the docs for IdeaProject

Default with idea plugin:
Java version used to run Gradle, for example '1.6'
Default with idea and java plugin:
Java version used to run Gradle, for example '1.6'

IdeaLanguageLevel languageLevel

The java language level of the project. Pass a valid Java version number (e.g. '1.5') or IDEA language level (e.g. 'JDK_1_5').

See the examples in the docs for IdeaProject.

Default with idea plugin:
'JDK_1_6'
Default with idea and java plugin:
project.sourceCompatibility

List<IdeaModule> modules

A ConventionProperty that holds modules for the ipr file.

See the examples in the docs for IdeaProject

Default with idea plugin:
project.allprojects.idea.module

File outputFile

Output *.ipr

See the examples in the docs for IdeaProject.

Default with idea plugin:
${project.projectDir}/${project.name}.ipr

Set<ProjectLibrary> projectLibraries

Note: This property is incubating and may change in a future version of Gradle.

The project-level libraries to be added to the IDEA project.

Default with idea plugin:
[] ([scala-library] with scala-base plugin)
Default with idea and java plugin:
[] ([scala-library] with scala-base plugin)

Set<String> wildcards

The wildcard resource patterns.

See the examples in the docs for IdeaProject.

Default with idea plugin:
['!?*.java', '!?*.groovy']

Script block details

ipr { }

Enables advanced configuration like tinkering with the output XML or affecting the way existing *.ipr content is merged with Gradle build information.

See the examples in the docs for IdeaProject

Delegates to:
XmlFileContentMerger from ipr