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 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>
<?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().