GenerateIdeaModule

API Documentation:GenerateIdeaModule

Generates an IDEA module file.

Example how to use scopes property to enable 'provided' dependencies in the output *.iml file:

apply plugin: 'java'
apply plugin: 'idea'

configurations {
  provided
  provided.extendsFrom(compile)
}

dependencies {
  //provided "some.interesting:dependency:1.0"
}

ideaModule {
  scopes.PROVIDED.plus += configurations.provided
}

Properties

PropertyDescription
downloadJavadoc

Whether to download and add javadoc associated with the dependency jars.

downloadSources

Whether to download and add sources associated with the dependency jars.

excludeDirs

The directories to be excluded.

inheritOutputDirs

If true, output directories for this module will be located below the output directory for the project; otherwise, they will be set to the directories specified by #outputDir and #testOutputDir.

inputFile

The input file to load the initial configuration from. Defaults to the output file. If the specified input file does not exist, this task uses some default initial configuration.

javaVersion

The JDK to use for this module. If null, the value of the existing or default ipr XML (inherited) is used. If it is set to inherited, the project SDK is used. Otherwise the SDK for the corresponding value of java version is used for this module

moduleDir

The content root directory of the module.

moduleName

Configures module name. It's optional because the task should configure it correctly for you. By default it will try to use the project.name or prefix it with a part of a project.path to make sure the moduleName is unique in the scope of a multi-module build. The 'uniqeness' of a module name is required for correct import into IntelliJ IDEA and the task will make sure the name is unique. See example below...

outputDir

The output directory for production classes. If null, no entry will be created.

outputFile

Configures output *.iml file. It's optional because the task should configure it correctly for you (including making sure it is unique in the multi-module build). If you really need to change the output file name it is much easier to do it via the moduleName property.

scopes

The keys of this map are the IDEA scopes. Each key points to another map that has two keys, plus and minus. The values of those keys are collections of Configuration objects. The files of the plus configurations are added minus the files from the minus configurations. See example below...

sourceDirs

The directories containing the production sources.

testOutputDir

The output directory for test classes. If null, no entry will be created.

testSourceDirs

The directories containing the test sources.

variables

The variables to be used for replacing absolute paths in the iml entries. For example, you might add a GRADLE_USER_HOME variable to point to the Gradle user home dir.

Property details

boolean downloadJavadoc

Whether to download and add javadoc associated with the dependency jars.

Default with idea plugin:
false

boolean downloadSources

Whether to download and add sources associated with the dependency jars.

Default with idea plugin:
true

Set<File> excludeDirs

The directories to be excluded.

Default with idea plugin:
[project.buildDir, project.file('.gradle')]

Boolean inheritOutputDirs

If true, output directories for this module will be located below the output directory for the project; otherwise, they will be set to the directories specified by #outputDir and #testOutputDir.

Default with idea plugin:
null
Default with idea and java plugin:
null

File inputFile

The input file to load the initial configuration from. Defaults to the output file. If the specified input file does not exist, this task uses some default initial configuration.

String javaVersion

The JDK to use for this module. If null, the value of the existing or default ipr XML (inherited) is used. If it is set to inherited, the project SDK is used. Otherwise the SDK for the corresponding value of java version is used for this module

Default with idea plugin:
'inherited'

File moduleDir

The content root directory of the module.

Default with idea plugin:
project.projectDir

String moduleName

Configures module name. It's optional because the task should configure it correctly for you. By default it will try to use the project.name or prefix it with a part of a project.path to make sure the moduleName is unique in the scope of a multi-module build. The 'uniqeness' of a module name is required for correct import into IntelliJ IDEA and the task will make sure the name is unique. See example below...

moduleName is a synthethic property that actually modifies the outputFile property value. This means that you should not configure both moduleName and outputFile at the same time. moduleName is recommended.

However, in case you really need to override the default moduleName this is the way to go:

apply plugin: 'idea'

ideaModule {
  moduleName = 'some-important-project'
}

since 1.0-milestone-2

Default with idea plugin:
${project.name} (sometimes prefixed with parts of ${project.path} to guarantee uniqeness)

File outputDir

The output directory for production classes. If null, no entry will be created.

Default with idea plugin:
null
Default with idea and java plugin:
null

File outputFile

Configures output *.iml file. It's optional because the task should configure it correctly for you (including making sure it is unique in the multi-module build). If you really need to change the output file name it is much easier to do it via the moduleName property.

Please refer to documentation on moduleName property. In IntelliJ IDEA the module name is the same as the name of the *.iml file.

Default with idea plugin:
${project.projectDir}/${project.name}.iml (sometimes the project.name is prefixed with parts of ${project.path} to guarantee uniqeness). Bear in mind that usually it is easier to use moduleName property instead of outputFile property.

The keys of this map are the IDEA scopes. Each key points to another map that has two keys, plus and minus. The values of those keys are collections of Configuration objects. The files of the plus configurations are added minus the files from the minus configurations. See example below...

Example how to use scopes property to enable 'provided' dependencies in the output *.iml file:

apply plugin: 'java'
apply plugin: 'idea'

configurations {
  provided
  provided.extendsFrom(compile)
}

dependencies {
  //provided "some.interesting:dependency:1.0"
}

ideaModule {
  scopes.PROVIDED.plus += configurations.provided
}
Default with idea plugin:
[:]
Default with idea and java plugin:
  • COMPILE -> project.configurations.compile
  • RUNTIME -> project.configurations.runtime - project.configurations.compile
  • TEST -> project.configurations.testRuntime - project.configurations.runtime

Set<File> sourceDirs

The directories containing the production sources.

Default with idea plugin:
[]
Default with idea and java plugin:
source dirs from project.sourceSets.main.allSource

File testOutputDir

The output directory for test classes. If null, no entry will be created.

Default with idea plugin:
null
Default with idea and java plugin:
null

Set<File> testSourceDirs

The directories containing the test sources.

Default with idea plugin:
[]
Default with idea and java plugin:
source dirs from project.sourceSets.test.allSource

Map<String, File> variables

The variables to be used for replacing absolute paths in the iml entries. For example, you might add a GRADLE_USER_HOME variable to point to the Gradle user home dir.

Default with idea plugin:
[:]

Script blocks

No script blocks

Methods

MethodDescription
beforeConfigured(closure)

Adds a closure to be called before the domain object is configured by this task. The domain object is passed as a parameter to the closure.

beforeConfigured(action)

Adds an action to be called before the domain object is configured by this task. The domain object is passed as a parameter to the action.

whenConfigured(closure)

Adds a closure to be called after the domain object has been configured by this task. The domain object is passed as a parameter to the closure.

whenConfigured(action)

Adds an action to be called after the domain object has been configured by this task. The domain object is passed as a parameter to the action.

withXml(closure)

Adds a closure to be called when the XML document has been created. The XML is passed to the closure as a parameter in form of a XmlProvider. The closure can modify the XML before it is written to the output file.

withXml(action)

Adds an action to be called when the XML document has been created. The XML is passed to the action as a parameter in form of a XmlProvider. The action can modify the XML before it is written to the output file.

Method details

void beforeConfigured(Closure closure)

Adds a closure to be called before the domain object is configured by this task. The domain object is passed as a parameter to the closure.

The closure is executed after the domain object has been loaded from the input file. Using this method allows you to change the domain object in some way before the task configures it.

void beforeConfigured(Action<? super T> action)

Adds an action to be called before the domain object is configured by this task. The domain object is passed as a parameter to the action.

The action is executed after the domain object has been loaded from the input file. Using this method allows you to change the domain object in some way before the task configures it.

void whenConfigured(Closure closure)

Adds a closure to be called after the domain object has been configured by this task. The domain object is passed as a parameter to the closure.

The closure is executed just before the domain object is written to the output file. Using this method allows you to override the configuration applied by this task.

void whenConfigured(Action<? super T> action)

Adds an action to be called after the domain object has been configured by this task. The domain object is passed as a parameter to the action.

The action is executed just before the domain object is written to the output file. Using this method allows you to override the configuration applied by this task.

void withXml(Closure closure)

Adds a closure to be called when the XML document has been created. The XML is passed to the closure as a parameter in form of a XmlProvider. The closure can modify the XML before it is written to the output file.

void withXml(Action<? super XmlProvider> action)

Adds an action to be called when the XML document has been created. The XML is passed to the action as a parameter in form of a XmlProvider. The action can modify the XML before it is written to the output file.