説明: ワークスペースでは、プロジェクト・ネーチャー (あるいは単に「ネーチャー」) が サポートされます。 ネーチャーは、プロジェクトにライフサイクル動作を関連付けます。 ネーチャーは、org.eclipse.core.resources.IProject に定義されている setDescription メソッドを使用してプロジェクトごとにインストールされます。 プロジェクトに追加されると自動的に構成され、プロジェクトから除去されると構成が解除されます。 たとえば、Java ネーチャーは Java ビルダーをインストールし、プロジェクトに追加されるときにその他の プロジェクト構成を行います。
ネーチャーの作成者は、ネーチャー拡張ポイントを使用することにより、 そのネーチャーのインプリメンテーションをシンボリック名に登録することができます。 これはワークスペース内からネーチャーの検出および構成に使用されます。 シンボリック名はネーチャー拡張の ID です。 ネーチャー拡張機能を定義する場合は、"name" 属性の値を人間が理解できる値にしてください。 この属性は、その意味を表し、ユーザーに提示することができます。
ネーチャーは、その他のネーチャーとの関係制約を指定できます。 "one-of-nature" 制約は、プロジェクトに、指定のセットに属するネーチャーが多くとも 1 つ存在するように 指定します。 これにより、相互に互換性のないネーチャー間の相互排他が強制されます。 "requires-nature" 制約では、別のネーチャーとの依存関係を指定します。 ネーチャーをプロジェクトに追加するときは、必要なすべてのネーチャーも追加する必要があります。 ネーチャーは常に、必要なネーチャーが先に構成され、後で構成解除されることが保証されています。 この理由から、ネーチャー間の循環依存関係は許されません。
以前は満たされていた制約が満たされなくなる場合は、ネーチャーをプロジェクトへ追加、または プロジェクトから除去することはできません。 ネーチャーがプロジェクト上で構成されたが、後からその制約が満たされていないことが分かると、その ネーチャーとそのネーチャーを必要とするすべてのネーチャーに使用不可 のマークが付けられますが、 プロジェクト上には残されます。 これはたとえば、必要なネーチャーがインストールから欠落した時などに発生することがあります。 インストールから欠落するネーチャーと、依存関係サイクルに関係するネーチャーにも、使用不可のマークが 付けられます。
ネーチャーは、増分プロジェクト・ビルダーが存在する場合に、それを構成するように指定できます。 この情報を使用して、ワークスペースは、ビルダーに対応するネーチャーが存在し、ビルドしている プロジェクト上で使用可能になっているときにのみ、ビルダーが実行されるようにします。 ネーチャーはプロジェクトから除去されたが、ネーチャーの構成解除メソッドがそれに対応するビルダーの 除去に失敗した場合は、ワークスペースがビルド・スペックからそれらのビルダーを自動的に除去します。 2 つのネーチャーがそれらのマークアップ内に同じ増分プロジェクト・ビルダーを指定することは許可され ません。
構成マークアップ:
<!ELEMENT runtime run?>
<!ELEMENT run parameter*>
<!ATTLIST run
class CDATA #REQUIRED
>
例:
以下は、3 つのネーチャー構成の例です。 waterNature と fireNature は同じ排他的セットに属しているので、同じプロジェクト上に共存できません。 snowNature には waterNature が必要なので、snowNature は waterNature のないプロジェクトでは 使用不可になります。 その結果、fireNature のあるプロジェクトでは snowNature を使用可能にできないことになります。
<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"/>
</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>
これらの拡張機能が ID "com.xyz.coolplugin" を使用してプラグインに定義されていた場合、これらの ネーチャーの完全修飾名は "com.xyz.coolplugin.fireNature"、"com.xyz.coolplugin.waterNature"、および "com.xyz.coolplugin.snowNature" になります。
API 情報: class 属性の値は、 org.eclipse.core.resources.IProjectNature のインプリメント元を表す必要があります。 ネーチャー定義は、org.eclipse.core.resources.IProjectNatureDescriptor インターフェースを 使用して検査できます。 これらの記述子オブジェクトは、org.eclipse.core.resources.IWorkspace でメソッド getNatureDescriptor(String) および getNatureDescriptors() を使用して取得できます。
提供されるインプリメンテーション: プラットフォームには、事前定義されたネーチャーはありません。 特定の製品のインストールにより、ネーチャーの組み込みが可能です。