Class IdeaProject

  • All Implemented Interfaces:
    Describable, IdeWorkspace

    public abstract class IdeaProject
    extends java.lang.Object
    implements 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.*
    
     plugins {
         id 'java'
         id '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(':some-project').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:

     plugins {
         id 'java'
         id '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
           }
         }
       }
     }
     
    • Method Detail

      • getDisplayName

        public java.lang.String getDisplayName()
        Description copied from interface: Describable
        Returns the display name of this object. It is strongly encouraged to compute it lazily, and cache the value if it is expensive.
        Specified by:
        getDisplayName in interface Describable
        Returns:
        the display name
      • 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.

      • ipr

        public void ipr​(@DelegatesTo(XmlFileContentMerger.class)
                        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

      • ipr

        public void ipr​(Action<? super XmlFileContentMerger> action)
        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

        Since:
        3.5
      • getName

        public java.lang.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 java.util.List<IdeaModule> getModules()
        Modules for the ipr file.

        See the examples in the docs for IdeaProject

      • setModules

        public void setModules​(java.util.List<IdeaModule> modules)
      • getJdkName

        public java.lang.String getJdkName()
        The java version used for defining the project sdk.

        See the examples in the docs for IdeaProject

      • setJdkName

        public void setJdkName​(java.lang.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​(IdeaLanguageLevel languageLevel)
        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.

        Since:
        4.0
      • setLanguageLevel

        public void setLanguageLevel​(java.lang.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

        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

        public void setTargetBytecodeVersion​(JavaVersion targetBytecodeVersion)
      • getVcs

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

        public void setVcs​(java.lang.String vcs)
      • getWildcards

        public java.util.Set<java.lang.String> getWildcards()
        The wildcard resource patterns.

        See the examples in the docs for IdeaProject.

      • setWildcards

        public void setWildcards​(java.util.Set<java.lang.String> wildcards)
      • getOutputFile

        public java.io.File getOutputFile()
        Output *.ipr

        See the examples in the docs for IdeaProject.

      • setOutputFile

        public void setOutputFile​(java.io.File outputFile)
      • getProjectLibraries

        public java.util.Set<ProjectLibrary> getProjectLibraries()
        The project-level libraries to be added to the IDEA project.
      • setProjectLibraries

        public void setProjectLibraries​(java.util.Set<ProjectLibrary> projectLibraries)
      • setPathFactory

        public void setPathFactory​(PathFactory pathFactory)
      • mergeXmlProject

        public void mergeXmlProject​(Project xmlProject)