プロジェクト・ネーチャー

ID: org.eclipse.core.resources.natures

説明: ワークスペースでは、プロジェクト・ネーチャー (あるいは単に「ネーチャー」) が サポートされます。 ネーチャーは、プロジェクトにライフサイクル動作を関連付けます。 ネーチャーは、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
   >

   <!ELEMENT parameter EMPTY>
   <!ATTLIST parameter
      name         CDATA #REQUIRED
      value        CDATA #REQUIRED
   >    <!ELEMENT one-of-nature EMPTY>
   <!ATTLIST one-of-nature
      id          CDATA #REQUIRED
     <!ELEMENT requires-nature EMPTY>
   <!ATTLIST requires-nature
      id          CDATA #REQUIRED
     <!ELEMENT builder EMPTY>
   <!ATTLIST builder
      id          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() を使用して取得できます。

提供されるインプリメンテーション: プラットフォームには、事前定義されたネーチャーはありません。 特定の製品のインストールにより、ネーチャーの組み込みが可能です。

Copyright IBM Corp. 2000, 2002.  All Rights Reserved.