專案本質

識別碼:org.eclipse.core.resources.natures

說明: 工作區支援專案本質的概念(或簡稱為 "本質")。本質建立生命週期行為與專案的關聯性。本質使用定義在 org.eclipse.core.resources.IProject 中的 setDescription 方法安裝在各個專案上。新增至專案時自動配置,從專案中移除時解除配置。例如,Java 本質可能安裝 Java 建立器,並且當新增至專案時處理其他專案的配置。

本質延伸點可讓本質作者將他們的本質實作登錄在某符號名稱之下,再從工作區中,利用這個符號名稱來尋找和配置本質。 符號名稱是本質延伸項目的 ID。 當定義本質延伸項目時,使用者最好包括一般人可理解的值作為 "name" 屬性,以識別其本質且可能將此值呈現給使用者。

本質可以指定關係限制和其他本質。 "one-of-nature" 限制指出給定的集合最多只有一個本質存在於專案中。這個限制強化了不相容的本質間相互的排外性。"requires-nature" 限制指定另一個本質的相依性。新增本質至專案時,也必須新增所有需要的本質。 這些本質保證用一定的方式配置以及解除配置,這樣他們所需的本質一律在他們被配置前配置而在他們被解除配置後才解除。因為這個原因,在本質之間不允許循環的相依性。

如果變更會違反之前滿足的限制,將無法由專案中新增或移除本質。 如果本質已配置於這個專案中,之後才發現不滿足它的限制,則所有需要它的本質會被標示為停用,但是還是存在於專案中。 這有可能發生,例如,所需的本質在安裝過程中遺漏。安裝過程中遺漏的本質以及與相依性循環有關的本質都被標示為停用。

本質也可以指定漸進式專案建立器,如果有的話也是他們所配置的。根據這個資訊,工作區確定建立器只在對應的本質出現而且是啟用的狀態時才執行建立專案。如果將本質由專案中移除,但是本質解除配置方法無法移除對應的建立器,工作區將自動由建置規格中移除這些建立器。不允許兩個本質在他們的標記中指定同一個漸進式專案建立器。

配置標記:

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


範例:

下列是三個本質配置的範例。waterNature 和 fireNature 屬於同一個 private 的集合,所以他們不能同時存在於相同的專案。snowNature 需要 waterNature,如果專案中遺漏 waterNature 則專案中的 snowNature 將停用。 它自然遵循專案中無法啟用的 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"/>
   </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上的 getNatureDescriptors() getNatureDescriptor(String) 取得這些描述子物件。

提供的實作:平台本身沒有任何預先定義的本質。 特定產品安裝可能會依需要而含有本質。

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