Nature di progetto

Identificativo: org.eclipse.core.resources.natures

Descrizione: l'area di lavoro supporta la nozione di nature di progetto (abbreviato in "nature").  Una natura associa a un progetto un comportamento del ciclo di vita.  Le nature vengono installate in base al progetto mediante il metodo setDescription definito in org.eclipse.core.resources.IProject.  Sono configurate automaticamente quando vengono aggiunte ad un progetto e deconfigurate quando vengono rimosse da un progetto.  Ad esempio, la natura Java potrebbe installare un generatore Java ed eseguire una diversa configurazione di un progetto quando viene aggiunta allo stesso.

Il punto di estensione delle nature permette agli scrittori di una natura di registrarne l'implementazione con un nome simbolico da utilizzare dall'interno dell'area di lavoro per trovare e configurare una natura. Il nome simbolico rappresenta l'id dell'estensione della natura.  Durante la definizione dell'estensione della natura, si consiglia agli utenti di includere un valore leggibile per l'attributo name" che ne identifica il significato e potrebbe essere presentato agli utenti.

Le nature possono specificare vincoli di relazione con altre nature.  Il vincolo "one-of-nature" specifica che su un progetto può essere presente al massimo una natura relativa ad una determinata serie in qualsiasi momento.  Il vincolo rafforza l'esclusione reciproca tra nature che non sono compatibili.  Il vincolo "requires-nature" specifica la dipendenza di una natura da un'altra.  Quando una natura viene aggiunta a un progetto, devono essere aggiunte tutte le altre nature necessarie.  Le nature vengono configurate e deconfigurate in modo che le relative nature necessarie siano sempre configurate prima e deconfigurate dopo la natura aggiunta.  Conseguentemente, non sono consentite dipendenze cicliche tra le nature.

Le nature possono essere aggiunte a o rimosse da un progetto nel caso in cui una modifica dovesse violare un limite precedentemente soddisfatto.  Se i vincoli di una natura configurata su un progetto non sono più soddisfatti, quella natura e tutte le altre per cui è necessaria vengono contrassegnate come disabilitate, anche se rimangono nel progetto.  L'eventualità si verifica, ad esempio,quando una natura necessaria manca nell'installazione.  Le nature che mancano nell'installazione e quelle coinvolte in cicli di dipendenza sono contrassegnate come disabilitate.

Le nature possono inoltre specificare i generatori di progetti incrementali eventualmente configurati.  L'informazione consente all'area di lavoro di garantire che i generatori saranno eseguiti soltanto quando la natura corrispondente è presente ed abilitata sul progetto in costruzione.  Quando una natura viene rimossa da un progetto senza che il metodo di deconfigurazione della natura riesca a rimuovere i suoi generatori, l'area di lavoro elimina automaticamente quei generatori dalla specifica di build.  Due nature non possono specificare lo stesso generatore di progetto incrementale nei propri tag.

Tag di configurazione:

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


Esempi:

Di seguito viene riportato un esempio di tre configurazioni di natura.  Le configurazioni waterNature e fireNature, che appartengono alla stessa serie esclusiva, non possono essere contemporaneamente presenti sullo stesso progetto.  Poiché la configurazione snowNature richiede waterNature, sarà disabilitata sui progetti dove manchi waterNature.  Logicamente non è possibile abilitare snowNature su un progetto in cui sia presente 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>

Se queste estensioni sono state definite in un plug-in con identificativo "com.xyz.coolplugin", il nome completo di queste nature sarà "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" e "com.xyz.coolplugin.snowNature".

Informazioni API: il valore dell'attributo class deve rappresentare un implementatore di org.eclipse.core.resources.IProjectNature. Le definizioni delle nature possono essere esaminate mediante l'interfaccia org.eclipse.core.resources.IProjectNatureDescriptor. E possibile ottenere questi oggetti descrittore utilizzando i metodi getNatureDescriptor(String) e getNatureDescriptors() su org.eclipse.core.resources.IWorkspace.

Implementazione fornita: la piattaforma non è dotata di alcuna natura predefinita. Installazioni particolari del prodotto potrebbero comprendere delle nature, secondo le esigenze.

Copyright IBM Corp. 2000, 2002.  Tutti i diritti riservati.