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

ID: org.eclipse.core.resources.natures

説明: ワークスペースは、プロジェクト・ネーチャー (あるいは単に「ネーチャー」) をサポートしています。 ネーチャーは、プロジェクトにライフサイクル動作を関連付けます。 ネーチャーは、org.eclipes.core.resources.IProject に定義されている setDescription メソッドを使用して、 プロジェクトごとにインストールされます。 これらはプロジェクトに追加されると自動的に構成され、プロジェクトから除去されると構成が解除されます。 たとえば、Java ネーチャーは Java ビルダーをインストールし、プロジェクトに追加されるときにその他のプロジェクト構成を行います。

ネーチャーの作成者は、ネーチャー拡張ポイントを使用することにより、 そのネーチャーのインプリメンテーションをシンボリック名に登録することができます。 これはワークスペース内からネーチャーの検出および構成に使用されます。 シンボル名はネーチャー拡張機能の ID です。 ネーチャー拡張機能を定義する場合は、"name" 属性の値を人間が理解できる形で組み込むようにしてください。 これはネーチャーを識別し、場合によっては、ユーザーに提示されることがあります。

ネーチャーは、その他のネーチャーとの関係制約を指定できます。 "one-of-nature" 制約は、プロジェクトに、指定のセットに属するネーチャーが多くとも 1 つ存在するように指定します。 これで、相互に互換性のないネーチャー間の相互排他が強制されます。 "requires-nature" 制約は、別のネーチャーとの依存関係を指定します。 ネーチャーをプロジェクトに追加するときは、必要なすべてのネーチャーも追加する必要があります。 ネーチャーは常に、必要なネーチャーが先に構成され、後で構成解除されることが保証されています。 この理由から、ネーチャー間の循環依存関係は許可されていません。

変更によって、以前は満たされていた制約が満たされなくなる場合、ネーチャーをプロジェクトに追加、 またはプロジェクトから除去することはできません。 ネーチャーがプロジェクト上で構成されたが、後からその制約が満たされていないことが分かると、 そのネーチャーとそのネーチャーを必要とするすべてのネーチャーに使用不可 のマークが付けられますが、 プロジェクト上には残されます。 これは、たとえば必要なネーチャーがインストールから欠落したときなどに発生することがあります。 インストールから欠落するネーチャー、また依存関係サイクルに関係するネーチャーにも使用不可のマークが付けられます。

さらにネーチャーは、インクリメンタル・プロジェクト・ビルダーが存在する場合に、それを構成するように指定できます。 この情報を使用して、ワークスペースは、ビルダーに対応するネーチャーが存在し、 ビルドしているプロジェクト上で使用可能になっているときにのみ、ビルダーが実行されるようにします。 ネーチャーはプロジェクトから除去されたが、ネーチャーの構成解除メソッドがそれに対応するビルダーの除去に失敗した場合は、 ワークスペースがビルド・スペックからそれらのビルダーを自動的に除去します。 2 つのネーチャーが、それらのマークアップ内に同じインクリメンタル・プロジェクト・ビルダーを指定することは許可されていません。

また、ネーチャーには、 ネーチャーが関連付けられているプロジェクトで、リンクされたリソースの作成を拒否する機能があります。 allowLinking 属性を「false」に設定することによって、 ネーチャーは、リンクされたリソースが作成されないことを宣言できます。 これは、リリース 2.1 の新しいフィーチャーです。

構成マークアップ:

   <!ELEMENT extension (runtime , (one-of-nature | requires-nature | builder)* , options?)>

   <!ATTLIST extension
     point CDATA #REQUIRED
     id    CDATA #IMPLIED
     name  CDATA #IMPLIED
   >

   <!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
   >

   <!ELEMENT options EMPTY>

   <!ATTLIST options
     allowLinking (true | false)
   >

例: 3 つのネーチャー構成の例を以下に示します。 waterNature と fireNature は同じ排他的セットに属しているため、同じプロジェクト上に共存できません。 snowNature には waterNature が必要であるため、snowNature は waterNature のないプロジェクトでは使用不可になります。 その結果、fireNature のあるプロジェクトでは snowNature を使用可能にできないことになります。 また、fireNature は、リンクされたリソースの作成を許可しません。

 
   <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>

これらの拡張機能が 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 (c) 2003 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html