このファイルの名前、位置、および内容は、ワークスペース API の一部です。 つまりこれらは、ファイルの既存ユーザーを切断するような方法では変更されないことが保証されています。 ただし、エレメントや属性をマークアップに追加する権限は、ファイルへの将来の追加のために予約されて います。 このため、記述ファイルの内容を読み取るクライアントは、不明なエレメントおよび属性を扱うことになります。
プロジェクト記述ファイルを変更、削除、または置換するクライアントは、それらを自己責任で行います。 無効な記述ファイルや欠落した記述ファイルのあるプロジェクトは一般に、使用不能になります。 無効な記述ファイルのあるプロジェクトがワークスペース始動時に見つかった場合は、プロジェクトが 閉じられ、プロジェクト記述ファイルが修復されるまで開くことができなくなります。 ワークスペースは一般に、欠落した記述ファイルや無効な記述ファイルを自動的には修復しません。 唯一の例外は、欠落したプロジェクト記述ファイルが、ワークスペース保管時および IProject.setDescription の呼び出し時には再生成されることです。
プロジェクト記述ファイルを変更することは、IProject.setDescription を介して プロジェクト記述を変更するのとほぼ同じ効果があります。 この例外は、プロジェクト・ネーチャーを追加または除去しても、対応するネーチャーの構成または 構成解除メソッドが起動されない点です。 もう 1 つの例外は、プロジェクト名の変更は無視される点です。
既存のプロジェクト記述ファイルが含まれているロケーションで新規プロジェクトを作成すると、 その記述ファイルの内容はプロジェクト記述として受け入れられます。 唯一の例外は、ファイル内のプロジェクト名が、作成されているプロジェクトの名前と一致しない場合は、 無視される点です。 ディスク上の記述ファイルが無効である場合は、プロジェクト作成が失敗します。
構成マークアップ:
<!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>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>
API 情報: プロジェクト記述ファイルの内容は、 org.eclipse.core.resources.IProjectDescription インターフェースにマップされます。 プロジェクト記述ファイルを上書きするには、メソッド IProject.setDescription() を使用します。