api / org.gradle.plugins.ide.idea.model / IdeaProject

IdeaProject

open class IdeaProject : IdeWorkspace

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 to 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 configure the VCS used by the project vcs = 'Git' //you can change the modules of 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 File("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 } } } } 

Constructors

<init>

IdeaProject(project: Project, ipr: XmlFileContentMerger)

Functions

getDisplayName

open fun getDisplayName(): String

getIpr

open fun getIpr(): XmlFileContentMerger

See #ipr(Action)

getJdkName

open fun getJdkName(): String

The java version used for defining the project sdk.

See the examples in the docs for IdeaProject

getLanguageLevel

open fun getLanguageLevel(): IdeaLanguageLevel

The default Java language Level to use for this project.

Generally, it isn't recommended to change this value. Instead, you are encouraged to set sourceCompatibility and targetCompatibility for your Gradle projects which allows you to have full control over language levels in Gradle projects, and means that Gradle and IDEA will use the same settings when compiling.

When not explicitly set, this is calculated as the maximum language level for the Idea modules of this Idea project.

getLocation

open fun getLocation(): Provider<RegularFile>

getModules

open fun getModules(): MutableList<IdeaModule>

Modules for the ipr file.

See the examples in the docs for IdeaProject

getName

open fun getName(): String

The name of the IDEA project. It is a convenience property that returns the name of the output file (without the file extension). In IDEA, the project name is driven by the name of the 'ipr' file.

getOutputFile

open fun getOutputFile(): File

Output *.ipr

See the examples in the docs for IdeaProject.

getPathFactory

open fun getPathFactory(): PathFactory

getProject

open fun getProject(): Project

An owner of this IDEA project.

If IdeaProject requires some information from gradle this field should not be used for this purpose.

getProjectLibraries

open fun getProjectLibraries(): MutableSet<ProjectLibrary>

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

getTargetBytecodeVersion

open fun getTargetBytecodeVersion(): JavaVersion

The target bytecode version to use for this project.

Generally, it isn't recommended to change this value. Instead, you are encouraged to set sourceCompatibility and targetCompatibility for your Gradle projects which allows you to have full control over language levels in Gradle projects, and means that Gradle and IDEA will use the same settings when compiling.

When languageLevel is not explicitly set, this is calculated as the maximum target bytecode version for the Idea modules of this Idea project.

getVcs

open fun getVcs(): String

The vcs for the project.

Values are the same as used in IDEA's “Version Control” preference window (e.g. 'Git', 'Subversion').

See the examples in the docs for IdeaProject.

getWildcards

open fun getWildcards(): MutableSet<String>

The wildcard resource patterns.

See the examples in the docs for IdeaProject.

ipr

open fun ipr(closure: Closure<Any>): Unit
open fun ipr(action: Action<in XmlFileContentMerger>): Unit

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

mergeXmlProject

open fun mergeXmlProject(xmlProject: Project): Unit

setJdkName

open fun setJdkName(jdkName: String): Unit

setLanguageLevel

open fun setLanguageLevel(languageLevel: IdeaLanguageLevel): Unit

Sets the java language level for the project.

When explicitly set in the build script, this setting overrides any calculated values for Idea project and Idea module.

open fun setLanguageLevel(languageLevel: Any): Unit

Sets the java language level for 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.

When explicitly set in the build script, this setting overrides any calculated values for Idea project and Idea module.

setModules

open fun setModules(modules: MutableList<IdeaModule>): Unit

setOutputFile

open fun setOutputFile(outputFile: File): Unit

setPathFactory

open fun setPathFactory(pathFactory: PathFactory): Unit

setProjectLibraries

open fun setProjectLibraries(projectLibraries: MutableSet<ProjectLibrary>): Unit

setTargetBytecodeVersion

open fun setTargetBytecodeVersion(targetBytecodeVersion: JavaVersion): Unit

setVcs

open fun setVcs(vcs: String): Unit

setWildcards

open fun setWildcards(wildcards: MutableSet<String>): Unit