Le nom, l'emplacement et le contenu de ce fichier font partie de l'API de l'espace de travail. Cela signifie qu'ils ne peuvent être modifiés de manière telle qu'ils empêcheraient les utilisateurs existants d'accéder au fichier. Cependant, le droit d'ajouter des attributs et des éléments supplémentaires aux marques de configuration est réservé pour des ajouts ultérieurs possibles au fichier. Pour cette raison, les clients qui lisent le contenu du fichier de description doivent tolérer les attributs et éléments inconnus.
Les clients qui modifient, suppriment ou remplacent le fichier de description du projet, le font à leur propre risque. Les projets dont le fichier de description est manquant ou non valide ne sont généralement pas utilisables. Si un projet dont le fichier de description n'est pas valide est détecté sur l'espace de travail au démarrage, le projet est fermé et il ne pourra pas être ouvert qu'une fois le fichier de description corrigé. Généralement, l'espace de travail ne tente pas de corriger automatiquement un fichier de description manquant ou non valide. Seule exception ; les fichiers de description manquants sont régénérés lors de la sauvegarde de l'espace de travail et lors des appels de IProject.setDescription.
Modifier le fichier de description du projet revient à modifier la description du projet via IProject.setDescription, à deux différences près : l'ajout ou la suppression de natures de projet ne déclenche pas la méthode de configuration ou de suppression de configuration de nature correspondante et les modifications apportées au nom du projet sont ignorées.
Si un projet est créé sur un emplacement contenant un fichier de description existant, le contenu de ce fichier sert de description du projet. Toutefois, le nom de projet indiqué dans ce fichier est ignoré s'il ne correspond pas au nom du projet créé. Si le fichier de description du disque n'est pas valide, la création du projet échoue.
Marques de configuration :
<!ELEMENT projectDescription (name, comment, projects, buildSpec, natures, linkedResources)>
<!ELEMENT name EMPTY>
<!ELEMENT comment EMPTY>
<!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"?>
<DescriptionProjet>
<name>WinterProject</name>
<comment>C'est un projet
cool.</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>
Informations API : Le contenu du fichier de description du projet est mappé à l'interface org.eclipse.core.resources.IProjectDescription. Le fichier de description du projet peut être remplacé par la méthode IProject.setDescription().