O ficheiro de descrição do projecto

Descrição: quando um projecto é criado na área de trabalho, é gerado automaticamente um ficheiro de descrição do projecto que descreve um projecto.  O objectivo deste ficheiro é fazer com que o projecto se descreva a si próprio, de modo a que um projecto que comprimido ou libertado num servidor pode ser recriado correctamente noutra área de trabalho.  Este ficheiro será sempre designado como ".project" e localiza-se como um membro directo da área de conteúdo do projecto.  O nome do ficheiro é exposto através do campo estático DESCRIPTION_FILE_NAME em org.eclipse.core.resources.IProjectDescription.

O nome, a localização e o conteúdo deste ficheiro fazem parte da API da área de trabalho.  Isto significa que existe a garantia de não irão ser alterados de forma a que os utilizadores existentes no ficheiro sejam afectados.  No entanto, o direito de adicionar elementos e atributos adicionais à marcação fica reservado para possíveis adições futuras ao ficheiro.  Por este motivo, os clientes que lerem o conteúdo do ficheiro deverão tolerar elementos e atributos desconhecidos.

Os clientes que modificarem, eliminarem ou substituírem o ficheiro de descrição do projecto fazem-no por sua conta e risco.  Os projectos com ficheiros de descrição não válidos ou em falta não serão, de uma forma geral, utilizáveis.  Se um projecto com um ficheiro de descrição não válido for encontrado no arranque da área de trabalho, o projecto é encerrado e não será possível abri-lo até que o ficheiro de descrição do projecto tenha sido reparado.  A área de trabalho não irá, de uma forma geral, tentar reparar automaticamente um ficheiro de descrição em falta ou não válido.  Uma excepção é que os ficheiros de descrição do projecto em falta serão gerados novamente durante a salvaguarda da área de trabalho e nas chamadas para IProject.setDescription.

As modificações efectuados no ficheiro de descrição do projecto têm na sua maioria o mesmo efeito que alterar a descrição do projecto através de IProject.setDescription.  Uma excepção é que adicionar ou remover naturezas do projecto não irá despoletar o método configure ou desconfigure da natureza correspondente.  Outra excepção é que as alterações ao nome do projecto são ignoradas.

Se for criado um novo projecto numa localização que contém um ficheiro de descrição de projecto existente, o conteúdo desse ficheiro de descrição será respeitado como a descrição do projecto.  Uma excepção é que o nome do projecto no ficheiro será ignorado se não corresponder ao nome do projecto que está a ser criado.  Se o ficheiro de descrição no disco não for válido, a criação do projecto irá falhar.


 

Marcação de 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 ficheiro de descrição de projecto de exemplo.  O projecto tem uma natureza e construtor únicos configurados e algumas referências ao projecto.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>WinterProject</name>
    <comment>This is a cool project.</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ção da API: o conteúdo do ficheiro de descrição do projecto está correlacionado com a interface org.eclipse.core.resources.IProjectDescription. O ficheiro de descrição do projecto pode ser substituído pelo método IProject.setDescription().