| <?xml version='1.0' encoding='UTF-8'?> |
| <!-- Schema file written by PDE --> |
| <schema targetNamespace="org.eclipse.core.resources" xmlns="http://www.w3.org/2001/XMLSchema"> |
| <annotation> |
| <appInfo> |
| <meta.schema plugin="org.eclipse.core.resources" id="natures" name="Project Natures"/> |
| </appInfo> |
| <documentation> |
| The workspace supports the notion of project natures |
| (or "natures" for short"). A nature associates lifecycle |
| behaviour with a project. Natures are installed on |
| a per-project basis using the setDescription method defined on |
| <samp>org.eclipse.core.resources.IProject</samp>. They are |
| configured when added to a project and deconfigured |
| when removed from the project. For example, the Java nature |
| might install a Java builder and do other project |
| configuration when added to a project. |
| <p> |
| The natures extension-point allows nature writers |
| to register their nature implementation under a |
| symbolic name that is then used from within the |
| workspace to find and configure natures. |
| The symbolic name is id of the nature extension. When |
| defining a nature extension, users are encouraged to include a |
| human-readable value for the "name" attribute which identifies |
| their meaning and potentially may be presented to users. |
| </p> |
| <p> |
| Natures can specify relationship constraints with other natures. |
| The "one-of-nature" constraint specifies that at most one nature |
| belonging to a given set can exist on a project at any given time. |
| This enforces mutual exclusion between natures that are not compatible |
| with each other. The "requires-nature" constraint specifies a |
| dependency on another nature. When a nature is added to a project, |
| all required natures must also be added. The natures are guaranteed |
| to be configured and deconfigured in such a way that their required |
| natures will always be configured before them and deconfigured after |
| them. For this reason, cyclic dependencies between natures are not |
| permitted. |
| </p> |
| <p> |
| Natures cannot be added to or removed from a project if that change would |
| violate any constraints that were previously satisfied. If a nature is |
| configured on a project, but later finds that its constraints are not |
| satisfied, that nature and all natures that require it are marked as |
| <i>disabled</i>, but remain on the project. This can happen, for example, |
| when a required nature goes missing from the install. Natures that are |
| missing from the install, and natures involved in dependency cycles are |
| also marked as disabled. |
| </p> |
| <p> |
| Natures can also specify which incremental project builders, if any, are |
| configured by them. With this information, the workspace will ensure that |
| builders will only run when their corresponding nature is present and |
| enabled on the project being built. If a nature is removed from a project, |
| but the nature's deconfigure method fails to remove its corresponding builders, |
| the workspace will remove those builders from the spec automatically. It |
| is not permitted for two natures to specify the same incremental project builder |
| in their markup. |
| </p> |
| <p> |
| Natures also have the ability to disallow the creation of linked resources on projects they are associated with. By setting the <code>allowLinking</code> attribute to &quot;false&quot;, a nature can declare that linked resources should never be created. This feature is new in release 2.1. |
| </p> |
| <p> |
| Starting with release 3.1, natures can declare affinity |
| with arbitrary content types, affecting the way content |
| type determination happens for files in the workspace. |
| In case of conflicts (two or more content types deemed |
| equally suitable for a given file), the content type having affinity with any of the natures configured for the corresponding project will be chosen. |
| </p> |
| </documentation> |
| </annotation> |
| |
| <element name="extension"> |
| <annotation> |
| <appInfo> |
| <meta.element /> |
| </appInfo> |
| </annotation> |
| <complexType> |
| <sequence> |
| <element ref="runtime"/> |
| <choice minOccurs="0" maxOccurs="unbounded"> |
| <element ref="one-of-nature"/> |
| <element ref="requires-nature"/> |
| <element ref="builder"/> |
| <element ref="content-type"/> |
| </choice> |
| <element ref="options" minOccurs="0" maxOccurs="1"/> |
| </sequence> |
| <attribute name="point" type="string" use="required"> |
| <annotation> |
| <documentation> |
| a fully qualified identifier of the target extension point |
| </documentation> |
| </annotation> |
| </attribute> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| The simple identifier of the nature. This is appended to the plug-in id to form the fully qualified nature id. |
| </documentation> |
| </annotation> |
| </attribute> |
| <attribute name="name" type="string"> |
| <annotation> |
| <documentation> |
| an optional name of the extension instance |
| </documentation> |
| <appInfo> |
| <meta.attribute translatable="true"/> |
| </appInfo> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="runtime"> |
| <complexType> |
| <sequence> |
| <element ref="run"/> |
| </sequence> |
| </complexType> |
| </element> |
| |
| <element name="run"> |
| <annotation> |
| <appInfo> |
| <meta.element labelAttribute="name"/> |
| </appInfo> |
| </annotation> |
| <complexType> |
| <sequence> |
| <element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> |
| </sequence> |
| <attribute name="class" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified name of a class which implements |
| <samp>org.eclipse.core.resources.IProjectNature</samp> |
| </documentation> |
| <appInfo> |
| <meta.attribute kind="java" basedOn="org.eclipse.core.resources.IProjectNature"/> |
| </appInfo> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="parameter"> |
| <annotation> |
| <appInfo> |
| <meta.element labelAttribute="name"/> |
| </appInfo> |
| </annotation> |
| <complexType> |
| <attribute name="name" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the name of this parameter made available to instances of the specified nature class |
| </documentation> |
| </annotation> |
| </attribute> |
| <attribute name="value" type="string" use="required"> |
| <annotation> |
| <documentation> |
| an arbitrary value associated with the given name and made available to instances of the specificed nature class |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="one-of-nature"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the name of an exclusive project nature category. |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="requires-nature"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified id of another nature extension that this nature extension requires. |
| </documentation> |
| <appInfo> |
| <meta.attribute kind="identifier" basedOn="org.eclipse.core.resources.natures/@id"/> |
| </appInfo> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="builder"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified id of an incremental project builder extension that this nature controls. |
| </documentation> |
| <appInfo> |
| <meta.attribute kind="identifier" basedOn="org.eclipse.core.resources.builders/@id"/> |
| </appInfo> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="options"> |
| <complexType> |
| <attribute name="allowLinking" type="boolean"> |
| <annotation> |
| <documentation> |
| an option to specify whether this nature allows the creation of linked resources. By default, linking is allowed. |
| </documentation> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <element name="content-type"> |
| <complexType> |
| <attribute name="id" type="string" use="required"> |
| <annotation> |
| <documentation> |
| the fully-qualified id of a content type associated to this nature. |
| </documentation> |
| <appInfo> |
| <meta.attribute kind="identifier" basedOn="org.eclipse.core.contenttype.contentTypes/content-type/@id"/> |
| </appInfo> |
| </annotation> |
| </attribute> |
| </complexType> |
| </element> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="examples"/> |
| </appInfo> |
| <documentation> |
| Following is an example of three nature configurations. The |
| waterNature and fireNature belong |
| to the same exclusive set, so they cannot co-exist on the same |
| project. The snowNature requires |
| waterNature, so snowNature will be disabled on a project that |
| is missing waterNature. It |
| naturally follows that snowNature cannot be enabled on a project |
| with fireNature. The fireNature also doesn't allow the creation of linked resources. |
| |
| <p> |
| <pre> |
| <extension id="fireNature" name="Fire Nature" point="org.eclipse.core.resources.natures"> |
| <runtime> |
| <run class="com.xyz.natures.Fire"/> |
| </runtime> |
| <one-of-nature id="com.xyz.stateSet"/> |
| <options allowLinking="false"/> |
| </extension> |
| |
| <extension id="waterNature" name="Water Nature" point="org.eclipse.core.resources.natures"> |
| <runtime> |
| <run class="com.xyz.natures.Water"/> |
| </runtime> |
| <one-of-nature id="com.xyz.stateSet"/> |
| </extension> |
| |
| <extension id="snowNature" name="Snow Nature" point="org.eclipse.core.resources.natures"> |
| <runtime> |
| <run class="com.xyz.natures.Snow"> |
| <parameter name="installBuilder" value="true"/> |
| </run> |
| </runtime> |
| <requires-nature id="com.xyz.coolplugin.waterNature"/> |
| <builder id="com.xyz.snowMaker"/> |
| </extension> |
| </pre> |
| </p> |
| |
| If these extensions were defined in a plug-in with id "com.xyz.coolplugin", the fully qualified name |
| of these natures would be "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" and |
| "com.xyz.coolplugin.snowNature". |
| </documentation> |
| </annotation> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="apiInfo"/> |
| </appInfo> |
| <documentation> |
| The value of the class attribute must represent an |
| implementor of |
| <samp>org.eclipse.core.resources.IProjectNature</samp>. |
| Nature definitions can be examined using the |
| <samp>org.eclipse.core.resources.IProjectNatureDescriptor</samp> interface. |
| The descriptor objects can be obtained using the methods |
| <samp>getNatureDescriptor(String)</samp> and <samp>getNatureDescriptors()</samp> |
| on <samp>org.eclipse.core.resources.IWorkspace</samp>. |
| </documentation> |
| </annotation> |
| |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="implementation"/> |
| </appInfo> |
| <documentation> |
| The platform itself does not have any predefined natures. |
| Particular product installs may include natures as required. |
| </documentation> |
| </annotation> |
| |
| <annotation> |
| <appInfo> |
| <meta.section type="copyright"/> |
| </appInfo> |
| <documentation> |
| Copyright (c) 2002, 2009 IBM Corporation and others.<br> |
| |
| This program and the accompanying materials are made |
| available under the terms of the Eclipse Public License 2.0 which |
| accompanies |
| this distribution, and is available at |
| <a |
| href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-v20.html</a>/ |
| |
| SPDX-License-Identifier: EPL-2.0 |
| </documentation> |
| </annotation> |
| |
| </schema> |