Naturezas do Projeto

Identificador: org.eclipse.core.resources.natures

Descrição: A área de trabalho suporta a noção de naturezas do projeto (ou somente "natureza").  Uma natureza associa comportamento do ciclo de vida a um projeto.  As naturezas são instaladas baseadas por-projetos utilizando o método setDescription definido em org.eclipse.core.resources.IProject.  Elas são automaticamente configuradas quando o projeto é aberto e desconfigurada quando o projeto é removido.  Por exemplo, a natureza Java pode instalar um construtor Java e executar outra configuração de projeto quando o projeto for incluído.

O ponto de extensão das naturezas permite aos escritores registrar as suas implementações de natureza sob um nome simbólico que é então utilizado de dentro da área de trabalho para encontrar e configurar as naturezas. O nome simbólico é o ID da extensão da natureza.  Ao definir uma extensão da natureza, os usuários são encorajados a incluir um valor legível por usuários para o atributo "name" que identifica seu significado e potencialmente podem ser apresentados aos usuários.

As naturezas podem especificar as limitações de relacionamento com outras naturezas.  A limitação "one-of-nature" especifica que no máximo uma natureza pertencente a um determinado conjunto pode existir em um projeto a qualquer momento específico.  Isso executa a exclusão mútua entre naturezas que não são compatíveis umas com as outras.  A limitação "requires-nature" especifica uma dependência em outra natureza.  Quando uma natureza é incluída em um projeto, todas as naturezas requeridas também devem ser incluídas.  Garante-se que as naturezas sejam configuradas e desconfiguradas de tal forma que suas naturezas requeridas sempre serão configuradas antes delas e desconfiguradas após elas.  Por este motivo, as dependências cíclicas entre as naturezas não são permitidas.

As naturezas não poderão ser incluídas ou removidas de um projeto, se essa alteração violar quaisquer limitações que foram satisfeitas anteriormente.  Se uma natureza for configurada em um projeto e, posteriormente, achar que suas limitações não serão satisfatórias, essa natureza e todas as naturezas que requerem isso serão marcadas como desativadas, mas permanecerão no projeto.  Isso pode acontecer, por exemplo, quando estiver faltando uma natureza requerida da instalação.  As naturezas que estão faltando da instalação e as naturezas envolvidas nos ciclos de dependência também são marcadas como desativadas.

As naturezas também podem especificar quais construtores de projeto incremental, se houver, são configurados por eles.  Com esta informação, a área de trabalho garantirá que os construtores apenas serão executados quando sua natureza correspondente estiver presente e ativada no projeto que está sendo criado.  Se uma natureza for removida de um projeto e o método de desconfiguração da natureza falhar ao remover seus construtores correspondentes, a área de trabalho irá remover estes construtores da especificação de construção automaticamente.  Isso não é permitido para duas naturezas, para especificar o mesmo construtor de projeto incremental em sua marcação.

Marcação da Configuração:

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


Exemplos:

A seguir encontra-se um exemplo de três configurações de natureza.  O waterNature e fireNature pertencem ao mesmo conjunto exclusivo, portanto, eles não podem coexistir no mesmo projeto.  O snowNature requer waterNature, portanto, snowNature será desativado em um projeto que está faltando waterNature.  Naturalmente, conclui-se que snowNature não pode ser ativado em um projeto com 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"/>
   </extensão>

   <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"/>
   </extensão>

Se esta extensão foi definida em um plug-in com id "com.xyz.coolplugin", o nome completo destas naturezas seria "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" e "com.xyz.coolplugin.snowNature".

Informações de API: o valor do atributo de classe deve representar um implementador de org.eclipse.core.resources.IProjectNature. As definições de natureza podem ser examinadas utilizando a interface org.eclipse.core.resources.IProjectNatureDescriptor. Esses objetos do descritor podem ser obtidos utilizando os métodos getNatureDescriptor(String) e getNatureDescriptors() em org.eclipse.core.resources.IWorkspace.

Implementação Fornecida: a plataforma por si só não tem naturezas pré-definidas. Instalações especiais do produto podem incluir naturezas, conforme pedido.

Copyright IBM Corp. 2000, 2002.  Todos os Direitos Reservados.