|
Groovy Documentation | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | PROPERTY | CONSTR | METHOD | DETAIL: FIELD | PROPERTY | CONSTR | METHOD |
java.lang.Objectorg.gradle.plugins.ide.eclipse.model.EclipseProject
class EclipseProject
Enables fine-tuning project details (.project file) of the Eclipse plugin
Example of use with a blend of all possible properties. Bear in mind that usually you don't have configure eclipse project directly because Gradle configures it for free!
apply plugin: 'java' apply plugin: 'eclipse' eclipse { project { //if you don't like the name Gradle has chosen name = 'someBetterName' //if you want to specify the Eclipse project's comment comment = 'Very interesting top secret project' //if you want to append some extra referenced projects in a declarative fashion: referencedProjects 'someProject', 'someOtherProject' //if you want to assign referenced projects referencedProjects = ['someProject'] as Set //if you want to append some extra natures in a declarative fashion: natures 'some.extra.eclipse.nature', 'some.another.interesting.nature' //if you want to assign natures in a groovy fashion: natures = ['some.extra.eclipse.nature', 'some.another.interesting.nature'] //if you want to append some extra build command: buildCommand 'buildThisLovelyProject' //if you want to append a build command with parameters: buildCommand 'buildItWithTheArguments', argumentOne: "I'm first", argumentTwo: "I'm second" //if you want to create an extra link in the eclipse project, //by location uri: linkedResource name: 'someLinkByLocationUri', type: 'someLinkType', locationUri: 'file://someUri' //by location: linkedResource name: 'someLinkByLocation', type: 'someLinkType', location: '/some/location' } }For tackling edge cases users can perform advanced configuration on resulting XML file. It is also possible to affect the way eclipse 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: 'eclipse' eclipse { project { file { //if you want to mess with the resulting XML in whatever way you fancy withXml { def node = it.asNode() node.appendNode('xml', 'is what I love') } //closure executed after .project content is loaded from existing file //but before gradle build information is merged beforeMerged { project -> //if you want skip merging natures... (a very abstract example) project.natures.clear() } //closure executed after .project content is loaded from existing file //and after gradle build information is merged whenMerged { project -> //you can tinker with the Project here } } } }
Property Summary | |
---|---|
List |
buildCommands
The build commands to be added to this Eclipse project. |
String |
comment
A comment used for the eclipse project. |
XmlFileContentMerger |
file
See file(Closure) |
Set |
linkedResources
The linked resources to be added to this Eclipse project. |
String |
name
Configures eclipse project name. |
List |
natures
The natures to be added to this Eclipse project. |
Set |
referencedProjects
The referenced projects of this Eclipse project (*not*: java build path project references). |
Constructor Summary | |
EclipseProject(XmlFileContentMerger file)
|
Method Summary | |
---|---|
void
|
buildCommand(Map args, String buildCommand)
Adds a build command with arguments to the eclipse project. |
void
|
buildCommand(String buildCommand)
Adds a build command to the eclipse project. |
void
|
file(Closure closure)
Enables advanced configuration like tinkering with the output XML or affecting the way existing .project content is merged with gradle build information |
void
|
linkedResource(Map args)
Adds a resource link (aka 'source link') to the eclipse project. |
void
|
mergeXmlProject(Project xmlProject)
|
void
|
natures(String... natures)
Appends natures entries to the eclipse project. |
void
|
referencedProjects(String... referencedProjects)
The referenced projects of this Eclipse project (*not*: java build path project references). |
Methods inherited from class Object | |
---|---|
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Property Detail |
---|
List buildCommands
For example see docs for EclipseProject
String comment
For example see docs for EclipseProject
final XmlFileContentMerger file
Set linkedResources
For example see docs for EclipseProject
String name
The logic that makes sure project names are unique is available since 1.0-milestone-2
If your project has problems with unique names it is recommended to always run gradle eclipse from the root, e.g. for all subprojects, including generation of .classpath. If you run the generation of the eclipse project only for a single subproject then you may have different results because the unique names are calculated based on eclipse projects that are involved in the specific build run.
If you update the project names then make sure you run gradle eclipse from the root, e.g. for all subprojects. The reason is that there may be subprojects that depend on the subproject with amended eclipse project name. So you want them to be generated as well because the project dependencies in .classpath need to refer to the amended project name. Basically, for non-trivial projects it is recommended to always run gradle eclipse from the root.
For example see docs for EclipseProject
List natures
For example see docs for EclipseProject
Set referencedProjects
Referencing projects does not mean adding a build path dependencies between them! If you need to configure a build path dependency use Gradle's dependencies section or eclipse.classpath.whenMerged { classpath -> ... to manipulate the classpath entries
For example see docs for EclipseProject
Constructor Detail |
---|
EclipseProject(XmlFileContentMerger file)
Method Detail |
---|
void buildCommand(Map args, String buildCommand)
For example see docs for EclipseProject
args
- A map with arguments, where the key is the name of the argument and the value the value.buildCommand
- The name of the build command.
void buildCommand(String buildCommand)
For example see docs for EclipseProject
buildCommand
- The name of the build command
void file(Closure closure)
The object passed to whenMerged{} and beforeMerged{} closures is of type Project
For example see docs for EclipseProject
void linkedResource(Map args)
For example see docs for EclipseProject
args
- A maps with the args for the link. Legal keys for the map are name, type, location and locationUri.
void mergeXmlProject(Project xmlProject)
void natures(String... natures)
For example see docs for EclipseProject
natures
- the nature names
void referencedProjects(String... referencedProjects)
Referencing projects does not mean adding a build path dependencies between them! If you need to configure a build path dependency use Gradle's dependencies section or eclipse.classpath.whenMerged { classpath -> ... to manipulate the classpath entries
referencedProjects
- The name of the project references.
Gradle API 1.12