Имя, расположение и содержимое этого файла входят в состав API рабочей области. Это позволяет гарантировать, что они всегда будут доступны пользователям. Однако, при необходимости в этот файл можно добавить дополнительные элемент и атрибуты. По этой причине клиенты, работающие с файлом описания, должны поддерживать неизвестные элементы и атрибуты.
Все операции, связанные с изменением, удалением и заменой файла описания проекта, выполняются клиентами на собственный риск. Проекты, файлы описания которых отсутствуют или недопустимы, как правило, неприменимы. Проект с недопустимым файлом, обнаруженный в ходе запуска рабочей области, закрывается. Вы сможете открыть его только после того, как файл описания будет исправлен. Автоматическое исправление отсутствующих или недопустимых файлов описания не выполняется. В качестве исключения отсутствующие файлы описания проектов повторно создаются в ходе сохранения рабочей области, а также в случае вызова IProject.setDescription.
Процесс внесения изменений в файл описания проекта, во многом аналогичен изменению описания проекта с помощью IProject.setDescription. Отличие заключается в том, что добавление и удаление классификаторов проектов не приводит к вызову соответствующих методов настройки и удаления из конфигурации. Кроме того, игнорируются изменения, внесенные в имя проекта.
Если в расположении, в котором создается новый проект, уже присутствует существующий файл описания, то информация из него заимствуется новым проектом. Если имя проекта, указанное в файле описания, не совпадает с именем нового проекта, оно игнорируется. Если файл описания недопустим, проект создан не будет.
Описание конфигурации:
<!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>Простой проект.</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>
Информация, связанная с API: Содержимое файла описания проекта соответствует области действия интерфейса org.eclipse.core.resources.IProjectDescription. Метод IProject.setDescription() позволяет заменить файл описания проекта.