Prosjektbeskrivelsesfilen

Beskrivelse: Når et prosjekt blir opprettet i arbeidsområdet, blir det automatisk generert en prosjektbeskrivelsesfil som beskriver prosjektet. Hensikten med denne filen er å gjøre prosjektet selvbeskrivende, slik at et prosjekt som blir pakket eller frigitt til en server, kan opprettes på riktig måte i et annet arbeidsområde. Filen kalles alltid ".project", og den ligger som en direkte medlem i prosjektets innholdsområde. Navnet på filen blir vist i det statiske feltet DESCRIPTION_FILE_NAME i org.eclipse.core.resources.IProjectDescription.

Navnet, plasseringen og innholdet i denne filen er del av arbeidsområde-APIet. Det betyr at det garanteres at de ikke blir endret på en slik måte at det fører til avbrudd for eksisterende brukere av filen. Retten til å legge til andre elementer og attributter i kodetypen er imidlertid reservert for mulige fremtidige tillegg til filen. Klienter som leser innholdet i beskrivelsesfilen, bør derfor tolerere ukjente elementer og attributter.

Klienter som endrer, sletter eller erstatter prosjektbeskrivelsesfilen, gjør det på egen risiko. Prosjekter med ugyldig eller manglende beskrivelsesfiler, kan generelt ikke brukes. Hvis et prosjekt med en ugyldig beskrivelsesfil blir oppdaget når arbeidsområdet startes, lukkes prosjektet, og det er ikke mulig å åpne det før prosjektbeskrivelsesfilen er reparert. Arbeidsområdet vil vanligvis ikke prøve å reparere en manglende eller ugyldig beskrivelsesfil automatisk. Et unntak er at manglende prosjektbeskrivelsesfiler blir generert på nytt når arbeidsområdet lagres, og ved kall til IProject.setDescription.

Endringer i prosjektbeskrivelsesfilen har stort sett samme virkning som å endre prosjektbeskrivelsen via IProject.setDescription.  Et unntak er når du legger til eller fjerner prosjektnaturer. Da blir ikke den tilsvarende naturens konfigurerings- eller dekonfigureringsmetode utløst. Et annet unntak er at endringer i prosjektnavnet blir ignorert.

Hvis et nytt prosjekt blir opprettet ved en plassering som inneholder en eksisterende prosjektbeskrivelsesfil, blir innholdet i den beskrivelsesfilen brukt som prosjektbeskrivelsen. Et unntak er at prosjektnavnet i filen blir ignorert hvis det ikke samsvarer med navnet på prosjektet som blir opprettet. Hvis beskrivelsesfilen på disken er ugyldig, blir ikke prosjektet opprettet.


 

Konfigurasjonskodetype:

   <!ELEMENT projectDescription (name, comment, projects, buildSpec, natures, linkedResources)>

   <!ELEMENT name EMPTY>

   <!ELEMENT comment EMPTY>

   <!ELEMENT projects (project)*>
   <!ELEMENT project 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>

Eksempler: Her er en beskrivelsesfil for et eksempelprosjekt. Det er konfigurert en enkelt natur og bygger, og noen prosjektreferanser, for prosjektet.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>WinterProject</name>
    <comment>Dette er et stilig prosjekt.</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-informasjon: Innholdet i prosjektbeskrivelsens filtilordning i grensesnittet org.eclipse.core.resources.IProjectDescription. Prosjektbeskrivelsesfilen kan overskrives av metoden IProject.setDescription().