org.gradle.plugins.ide.idea.model

## Class IdeaProject

- java.lang.Object
- - org.gradle.plugins.ide.idea.model.IdeaProject

-     public class IdeaProject
      extends Object

  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
             }
           }
         }
       }

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `IdeaProject(Project project, XmlFileContentMerger ipr)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `XmlFileContentMerger` | `getIpr()` See `ipr(Closure)`
    `String` | `getJdkName()` The java version used for defining the project sdk.
    `IdeaLanguageLevel` | `getLanguageLevel()` The default Java language Level to use for this project.
    `List<IdeaModule>` | `getModules()` A `ConventionProperty` that holds modules for the ipr file.
    `String` | `getName()` The name of the IDEA project.
    `File` | `getOutputFile()` Output *.ipr
    `PathFactory` | `getPathFactory()`
    `Project` | `getProject()` An owner of this IDEA project.
    `Set<ProjectLibrary>` | `getProjectLibraries()` The project-level libraries to be added to the IDEA project.
    `JavaVersion` | `getTargetBytecodeVersion()` The target bytecode version to use for this project.
    `String` | `getVcs()` The vcs for the project.
    `Set<String>` | `getWildcards()` The wildcard resource patterns.
    `void` | `ipr(Closure<XmlFileContentMerger> 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` | `setJdkName(String jdkName)`
    `void` | `setLanguageLevel(Object languageLevel)` Sets the java language level for the project.
    `void` | `setModules(List<IdeaModule> modules)`
    `void` | `setOutputFile(File outputFile)`
    `void` | `setPathFactory(PathFactory pathFactory)`
    `void` | `setProjectLibraries(Set<ProjectLibrary> projectLibraries)`
    `void` | `setTargetBytecodeVersion(JavaVersion targetBytecodeVersion)`
    `void` | `setVcs(String vcs)`
    `void` | `setWildcards(Set<String> wildcards)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### IdeaProject

          public IdeaProject(Project project,
                     XmlFileContentMerger ipr)

  - ### Method Detail

    - #### getProject

          public Project getProject()

      An owner of this IDEA project.

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

    - #### getIpr

          public XmlFileContentMerger getIpr()

      See `ipr(Closure)`

    - #### ipr

          public void ipr(Closure<XmlFileContentMerger> 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`

    - #### getName

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

    - #### getModules

          public List<IdeaModule> getModules()

      A `ConventionProperty` that holds modules for the ipr file.

      See the examples in the docs for `IdeaProject`

    - #### setModules

          public void setModules(List<IdeaModule> modules)

    - #### getJdkName

          public String getJdkName()

      The java version used for defining the project sdk.

      See the examples in the docs for `IdeaProject`

    - #### setJdkName

          public void setJdkName(String jdkName)

    - #### getLanguageLevel

          public IdeaLanguageLevel getLanguageLevel()

      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.

    - #### setLanguageLevel

          public void setLanguageLevel(Object languageLevel)

      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.

    - #### getTargetBytecodeVersion

          @Incubating
          public JavaVersion getTargetBytecodeVersion()

      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.

    - #### setTargetBytecodeVersion

          @Incubating
          public void setTargetBytecodeVersion(JavaVersion targetBytecodeVersion)

    - #### getVcs

          @Incubating
          public String getVcs()

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

    - #### setVcs

          @Incubating
          public void setVcs(String vcs)

    - #### getWildcards

          public Set<String> getWildcards()

      The wildcard resource patterns.

      See the examples in the docs for `IdeaProject`.

    - #### setWildcards

          public void setWildcards(Set<String> wildcards)

    - #### getOutputFile

          public File getOutputFile()

      Output *.ipr

      See the examples in the docs for `IdeaProject`.

    - #### setOutputFile

          public void setOutputFile(File outputFile)

    - #### getProjectLibraries

          @Incubating
          public Set<ProjectLibrary> getProjectLibraries()

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

    - #### setProjectLibraries

          @Incubating
          public void setProjectLibraries(Set<ProjectLibrary> projectLibraries)

    - #### getPathFactory

          public PathFactory getPathFactory()

    - #### setPathFactory

          public void setPathFactory(PathFactory pathFactory)

    - #### mergeXmlProject

          public void mergeXmlProject(Project xmlProject)