Describable
, IdeWorkspace
public abstract class IdeaProject extends java.lang.Object implements IdeWorkspace
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 withProject
} //closure executed after *.ipr content is loaded from existing file //and after gradle build information is merged whenMerged { project -> //you can tinker withProject
} } } }
Constructor | Description |
---|---|
IdeaProject(Project project,
XmlFileContentMerger ipr) |
Modifier and Type | Method | Description |
---|---|---|
java.lang.String |
getDisplayName() |
Returns the display name of this object.
|
XmlFileContentMerger |
getIpr() |
See
ipr(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 *.ipr
|
PathFactory |
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) |
@Inject public IdeaProject(Project project, XmlFileContentMerger ipr)
public java.lang.String getDisplayName()
Describable
getDisplayName
in interface Describable
public Provider<RegularFile> getLocation()
IdeWorkspace
getLocation
in interface IdeWorkspace
public Project getProject()
If IdeaProject requires some information from gradle this field should not be used for this purpose.
public XmlFileContentMerger getIpr()
ipr(Action)
public void ipr(@DelegatesTo(XmlFileContentMerger.class) Closure closure)
See the examples in the docs for IdeaProject
public void ipr(Action<? super XmlFileContentMerger> action)
See the examples in the docs for IdeaProject
public java.lang.String getName()
public java.util.List<IdeaModule> getModules()
See the examples in the docs for IdeaProject
public void setModules(java.util.List<IdeaModule> modules)
public java.lang.String getJdkName()
See the examples in the docs for IdeaProject
public void setJdkName(java.lang.String jdkName)
public IdeaLanguageLevel getLanguageLevel()
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.
public void setLanguageLevel(IdeaLanguageLevel languageLevel)
When explicitly set in the build script, this setting overrides any calculated values for Idea project and Idea module.
public void setLanguageLevel(java.lang.Object languageLevel)
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.
public JavaVersion getTargetBytecodeVersion()
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.
public void setTargetBytecodeVersion(JavaVersion targetBytecodeVersion)
public java.lang.String getVcs()
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
.
public void setVcs(java.lang.String vcs)
public java.util.Set<java.lang.String> getWildcards()
See the examples in the docs for IdeaProject
.
public void setWildcards(java.util.Set<java.lang.String> wildcards)
public java.io.File getOutputFile()
See the examples in the docs for IdeaProject
.
public void setOutputFile(java.io.File outputFile)
public java.util.Set<ProjectLibrary> getProjectLibraries()
public void setProjectLibraries(java.util.Set<ProjectLibrary> projectLibraries)
public PathFactory getPathFactory()
public void setPathFactory(PathFactory pathFactory)
public void mergeXmlProject(Project xmlProject)