이 파일의 이름, 위치 및 컨텐츠는 작업공간 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>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() 메소드로 겹쳐쓸 수 있습니다.