Het projectbeschrijvingsbestand

Beschrijving: Wanneer een project in het werkgebied wordt gemaakt, wordt automatisch een projectbeschrijvingsbestand gegenereerd dat het project beschrijft. Het doel van dit bestand is ervoor zorgen dat het project zichzelf beschrijft, zodat een project waarvan een ZIP-bestand is gemaakt of dat wordt vrijgegeven op een server, op de juiste wijze opnieuw kan worden gemaakt in een ander werkgebied. Dit bestand wordt altijd ".project" genoemd en wordt als direct lid van het contentgebied van het project geplaatst. De naam van het bestand wordt door middel van het statische veld DESCRIPTION_FILE_NAME aangeboden aan org.eclipse.core.resources.IProjectDescription.

De naam, locatie en content van dit bestand maken deel uit van de werkgebied-API. Dit betekent dat deze niet op zodanige wijze kunnen worden gewijzigd dat bestaande gebruikers van het bestand zouden worden losgekoppeld. Het recht extra elementen en kenmerken toe te voegen aan de markup is echter gereserveerd voor mogelijke toevoegingen in de toekomst. Daarom moeten clients die de inhoud van het beschrijvingsbestand aan het lezen zijn, onbekende elementen en kenmerken toestaan.

Clients die het projectbeschrijvingsbestand wijzigen, wissen of vervangen, doen dit op eigen risico. Projecten met ongeldige of ontbrekende beschrijvingsbestanden zijn niet bruikbaar voor algemeen gebruik. Als een project met een ongeldig beschrijvingsbestand wordt aangetroffen tijdens het opstarten van het werkgebied, wordt het project gesloten en is het niet eerder mogelijk dit opnieuw te openen voordat het projectbeschrijvingsbestand is hersteld. Het werkgebied zal in het algemeen niet automatisch proberen een ontbrekend of ongeldig beschrijvingsbestand te herstellen. Een uitzondering treedt op wanneer ontbrekende projectbeschrijvingsbestanden opnieuw worden gegenereerd tijdens het opslaan van het werkgebied en wanneer IProject.setDescription wordt aangeroepen.

Wijzigingen aan het projectbeschrijvingsbestand hebben meestal hetzelfde effect als wanneer de projectbeschrijving wordt gewijzigd via IProject.setDescription. Een uitzondering is dat het toevoegen of verwijderen van projectsoorten niet de configureermethode of de deconfigureermethode van de bijbehorende soort activeert. Een andere uitzondering is dat wijzigingen aan de projectnaam genegeerd worden.

Als een nieuw project wordt gemaakt op een locatie die een bestaand projectbeschrijvingsbestand bevat, wordt de inhoud van dat beschrijvingsbestand als projectbeschrijving gebruikt. Een uitzondering is dat de projectnaam in het bestand genegeerd wordt als deze niet overeenkomt met de naam van het project dat wordt gemaakt. Als het beschrijvingsbestand op schijf ongeldig is, mislukt het maken van het project.


 

Configuratiemarkup:

   <!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>

Voorbeelden: hieronder ziet u een voorbeeld van een projectbeschrijvingsbestand. Voor het project zijn een enkele soort en builder geconfigureerd en het bevat een aantal projectverwijzingen.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>WinterProject</name>
    <comment>Dit is een 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-informatie: De inhoud van het projectbeschrijvingsbestand verwijst naar de interface org.eclipse.core.resources.IProjectDescription. De methode IProject.setDescription() kan het projectbeschrijvingsbestand vervangen.