O Arquivo de Descrição do Projeto

Descrição: Quando um projeto é criado no espaço de trabalho, um arquivo de descrição do projeto é gerado automaticamente para descrevê-lo.  O objetivo desse arquivo é tornar o projeto auto-descritivo, para que um projeto que seja compactado ou liberado para um servidor possa ser corretamente recriado em outro espaço de trabalho.  Esse arquivo é sempre chamado ".project", e está localizado como um membro direto da área de conteúdo do projeto.  O nome do arquivo é exposto por meio do campo estático DESCRIPTION_FILE_NAME em org.eclipse.core.resources.IProjectDescription.

O nome, a localização e o conteúdo desse arquivo fazem parte da API do espaço de trabalho.  Isso significa que é garantido que eles não são alterados de maneira que interromperia os usuários existentes do arquivo.  Entretanto, o direito de adicionar elementos e atributos adicionais à marcação é reservado para possíveis inclusões futuras no arquivo.  Por este motivo, os clientes que lêem o conteúdo do arquivo de descrição devem tolerar elementos e atributos desconhecidos.

Os clientes que modificam, excluem ou substituem o arquivo de descrição do projeto o fazem por sua conta e risco.  Os projetos com arquivos de descrição inválidos ou que estão faltando, geralmente, não serão utilizáveis.  Se um projeto com um arquivo de descrição inválido for descoberto na inicialização do espaço de trabalho, ele será fechado e não será possível abri-lo até que o arquivo de descrição do projeto tenha sido corrigido.  Geralmente, o espaço de trabalho tentará automaticamente corrigir um arquivo de descrição inválido ou que está faltando.  Uma exceção é que os arquivos de descrição de projeto que estão faltando serão gerados novamente durante o salvamento do espaço de trabalho e em chamadas a IProject.setDescription.

Na maioria das vezes, as modificações no arquivo de descrição do projeto têm o mesmo resultado que a alteração da descrição do projeto por meio de IProject.setDescription.  Uma exceção é que incluir ou remover as naturezas do projeto não irá acionar o método de configuração e desconfiguração da natureza correspondente.  Outra exceção é que as alterações no nome do projeto são ignoradas.

Se um novo projeto for criado em uma localização que contém um arquivo de descrição de projeto existente, o conteúdo desse arquivo de descrição será aceito como a descrição do projeto.  Uma exceção é que o nome do projeto no arquivo será ignorado, se ele não corresponder ao nome do projeto que está sendo criado.  Se o arquivo de descrição no disco for inválido, a criação do projeto falhará.


 

Marcação da Configuração:

   <!ELEMENT projectDescription (name, comment, projects, buildSpec, natures, linkedResources)>

   <!ELEMENT name EMPTY>

   <!ELEMENT comment EMPTY>

   <!ELEMENT projects (project)*>
   <!ELEMENT project EMPTY>    <!ELEMENT buildSpec (buildCommand)*>

   <!ELEMENT buildCommand (name, arguments)>

   <!ELEMENT name EMPTY>

   <!ELEMENT arguments (dictionary?)>

   <!ELEMENT dictionary (key, value)*>

   <!ELEMENT key EMPTY>

   <!ELEMENT value EMPTY>

   <!ELEMENT natures (nature)*>

   <!ELEMENT nature EMPTY>

   <!ELEMENT linkedResources (link)*>

   <!ELEMENT link (name, type, location)>

   <!ELEMENT name EMPTY>

   <!ELEMENT type EMPTY>

   <!ELEMENT location EMPTY>

Exemplos: A seguir encontra-se um arquivo de descrição de projeto de amostra.  O projeto possui uma única natureza e construtor configurados e algumas referências de projeto.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>WinterProject</name>
    <comment>Este é um projeto tranqüilo.</comment>
    <projects>
        <project>org.seasons.sdt</project>
        <project>CoolStuff</project>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.seasons.sdt.seasonBuilder</name>
            <arguments>
                <dictionary>
                    <key>climate</key>
                    <value>cold</value>
                </dictionary>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.seasons.sdt.seasonNature</nature>
    </natures>
</projectDescription>
 

Informações de API: O conteúdo do arquivo de descrição do projeto é mapeado para a interface org.eclipse.core.resources.IProjectDescription. O arquivo de descrição do projeto pode ser sobreposto pelo método IProject.setDescription().

Copyright IBM Corporation e outros 2000, 2003.