Class IdeaProject
- java.lang.Object
-
- org.gradle.plugins.ide.idea.model.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
objectExamples 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 withProject
} } } }
-
-
Field Summary
Fields Modifier and Type Field Description protected IdeaLanguageLevel
languageLevel
protected JavaVersion
targetBytecodeVersion
-
Constructor Summary
Constructors Constructor Description IdeaProject(Project project, XmlFileContentMerger ipr)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
getDisplayName()
Returns the display name of this object.XmlFileContentMerger
getIpr()
Seeipr(Action)
java.lang.String
getJdkName()
The java version used for defining the project sdk.IdeaLanguageLevel
getLanguageLevel()
The default Java language Level to use for this project.Provider<RegularFile>
getLocation()
Returns the location of the generated workspace.java.util.List<IdeaModule>
getModules()
Modules for the ipr file.java.lang.String
getName()
The name of the IDEA project.java.io.File
getOutputFile()
Output *.iprPathFactory
getPathFactory()
Project
getProject()
An owner of this IDEA project.java.util.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.java.lang.String
getVcs()
The vcs for the project.java.util.Set<java.lang.String>
getWildcards()
The wildcard resource patterns.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
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.void
mergeXmlProject(Project xmlProject)
void
setJdkName(java.lang.String jdkName)
void
setLanguageLevel(java.lang.Object languageLevel)
Sets the java language level for the project.void
setLanguageLevel(IdeaLanguageLevel languageLevel)
Sets the java language level for the project.void
setModules(java.util.List<IdeaModule> modules)
void
setOutputFile(java.io.File outputFile)
void
setPathFactory(PathFactory pathFactory)
void
setProjectLibraries(java.util.Set<ProjectLibrary> projectLibraries)
void
setTargetBytecodeVersion(JavaVersion targetBytecodeVersion)
void
setVcs(java.lang.String vcs)
void
setWildcards(java.util.Set<java.lang.String> wildcards)
-
-
-
Field Detail
-
languageLevel
protected IdeaLanguageLevel languageLevel
-
targetBytecodeVersion
protected JavaVersion targetBytecodeVersion
-
-
Constructor Detail
-
IdeaProject
@Inject public IdeaProject(Project project, XmlFileContentMerger ipr)
-
-
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 interfaceDescribable
- Returns:
- the display name
-
getLocation
public Provider<RegularFile> getLocation()
Description copied from interface:IdeWorkspace
Returns the location of the generated workspace.- Specified by:
getLocation
in interfaceIdeWorkspace
-
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()
Seeipr(Action)
-
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
andtargetCompatibility
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
andtargetCompatibility
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 *.iprSee 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)
-
getPathFactory
public PathFactory getPathFactory()
-
setPathFactory
public void setPathFactory(PathFactory pathFactory)
-
mergeXmlProject
public void mergeXmlProject(Project xmlProject)
-
-