Package: org.gradle.plugins.ide.idea.model

## [Groovy] Class IdeaProject

- org.gradle.plugins.ide.idea.model.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 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
             }
           }
         }
       }

- - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `XmlFileContentMerger` | `ipr` See ipr(Closure)
    `String` | `jdkName` The java version used for defining the project sdk.
    `IdeaLanguageLevel` | `languageLevel` The java language level of the project.
    `List<IdeaModule>` | `modules` A ConventionProperty that holds modules for the ipr file.
    `File` | `outputFile` Output *.ipr
    `PathFactory` | `pathFactory`
    `Set<ProjectLibrary>` | `projectLibraries` The project-level libraries to be added to the IDEA project.
    `String` | `vcs` The vcs for the project.
    `Set<String>` | `wildcards` The wildcard resource patterns.

  - ### Constructor Summary

    Constructors
    Constructor and description
    `IdeaProject (XmlFileContentMerger ipr)`

  - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `String` | `getName()` The name of the IDEA project.
    `void` | `ipr(Closure closure)` Enables advanced configuration like tinkering with the output XML or affecting the way existing *.ipr content is merged with Gradle build information.
    `void` | `mergeXmlProject(Project xmlProject)`
    `void` | `setLanguageLevel(Object languageLevel)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Property Detail

    - #### final XmlFileContentMerger ipr

      See ipr(Closure)

    - #### String jdkName

      The java version used for defining the project sdk.

      See the examples in the docs for IdeaProject

    - #### 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.

    - #### List<IdeaModule> modules

      A ConventionProperty that holds modules for the ipr file.

      See the examples in the docs for IdeaProject

    - #### File outputFile

      Output *.ipr

      See the examples in the docs for IdeaProject.

    - #### PathFactory pathFactory

    - #### @Incubating Set<ProjectLibrary> projectLibraries

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

    - #### @Incubating String vcs

      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.

    - #### Set<String> wildcards

      The wildcard resource patterns.

      See the examples in the docs for IdeaProject.

  - ### Constructor Detail

    - #### IdeaProject(XmlFileContentMerger ipr)

  - ### Method Detail

    - #### String getName()

      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.

    - #### void ipr(Closure closure)

      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

    - #### void mergeXmlProject(Project xmlProject)

    - #### void setLanguageLevel(Object languageLevel)