Idea
    Enables fine-tuning module details (*.iml file) of the IDEA plugin.
Example of use with a blend of most possible properties. Typically you don't have to configure this model directly because Gradle configures it for you.
plugins {
    id 'java'
    id 'idea'
}
//for the sake of this example, let's introduce a 'performanceTestCompile' configuration
configurations {
  performanceTestCompile
  performanceTestCompile.extendsFrom(testCompile)
}
dependencies {
  //performanceTestCompile "some.interesting:dependency:1.0"
}
idea {
  //if you want parts of paths in resulting files (*.iml, etc.) to be replaced by variables (Files)
  pathVariables GRADLE_HOME: file('~/cool-software/gradle')
  module {
    //if for some reason you want to add an extra sourceDirs
    sourceDirs += file('some-extra-source-folder')
    //and some extra test source dirs
    testSources.from(file('some-extra-test-dir'))
    //and some extra resource dirs
    resourceDirs += file('some-extra-resource-dir')
    //and some extra test resource dirs
    testResources.from(file('some-extra-test-resource-dir'))
    //and hint to mark some of existing source dirs as generated sources
    generatedSourceDirs += file('some-extra-source-folder')
    //and some extra dirs that should be excluded by IDEA
    excludeDirs += file('some-extra-exclude-dir')
    //if you don't like the name Gradle has chosen
    name = 'some-better-name'
    //if you prefer different output folders
    inheritOutputDirs = false
    outputDir = file('muchBetterOutputDir')
    testOutputDir = file('muchBetterTestOutputDir')
    //if you prefer different SDK than the one inherited from IDEA project
    jdkName = '1.6'
    //put our custom test dependencies onto IDEA's TEST scope
    scopes.TEST.plus += [ configurations.performanceTestCompile ]
    //if 'content root' (as IDEA calls it) of the module is different
    contentRoot = file('my-module-content-root')
    //if you love browsing Javadoc
    downloadJavadoc = true
    //and hate reading sources :)
    downloadSources = false
  }
}
Content copied to clipboard
beforeMerged and whenMerged closures receive a Module parameter
Examples of advanced configuration:
plugins {
    id 'java'
    id 'idea'
}
idea {
  module {
    iml {
      //if you like to keep *.iml in a secret folder
      generateTo = file('secret-modules-folder')
      //if you want to mess with the resulting XML in whatever way you fancy
      withXml {
        def node = it.asNode()
        node.appendNode('iLoveGradle', 'true')
        node.appendNode('butAlso', 'I find increasing pleasure tinkering with output *.iml contents. Yeah!!!')
      }
      //closure executed after *.iml content is loaded from existing file
      //but before gradle build information is merged
      beforeMerged { module ->
        //if you want skip merging exclude dirs
        module.excludeFolders.clear()
      }
      //closure executed after *.iml content is loaded from existing file
      //and after gradle build information is merged
      whenMerged { module ->
        //you can tinker with Module
      }
    }
  }
}
Content copied to clipboard
Properties
Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  This field is 
@Deprecated, please use testResources instead.Link copied to clipboard
                  Link copied to clipboard
                  This field is 
@Deprecated, please use testSources instead.Link copied to clipboard
                  Functions
Link copied to clipboard
                  The module specific language Level to use for this module.
Link copied to clipboard
                  Configures output *.iml file.
Link copied to clipboard
                  The module specific bytecode version to use for this module.
Link copied to clipboard
                  Enables advanced configuration like tinkering with the output XML or affecting the way existing *.iml content is merged with gradle build information.
Link copied to clipboard
                  Whether to download and add javadoc associated with the dependency jars.
Link copied to clipboard
                  Whether to download and add sources associated with the dependency jars.
Link copied to clipboard
                  Link copied to clipboard
                  Resolves and returns the module's dependencies.
Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard
                  Link copied to clipboard