Archivo descriptivo de proyecto

Descripción: cuando se crea un proyecto en el área de trabajo, se genera automáticamente un archivo descriptivo de proyecto que describe el proyecto.  La finalidad de este archivo es convertir el proyecto en autodescriptivo, de forma que un proyecto que se comprime en un archivo zip o se libera en un servidor pueda volver a crearse correctamente en otra área de trabajo.  Este archivo se denomina siempre ".project", y se ubica como miembro directo del área de contenido del proyecto.  El nombre del archivo se indica mediante el campo estático DESCRIPTION_FILE_NAME en org.eclipse.core.resources.IProjectDescription.

El nombre, la ubicación y el contenido de este archivo forman parte de la API del área de trabajo.  Esto implica que existe la garantía de que estos valores no cambiarán de tal manera que los usuarios existentes del archivo se vean afectados.  Sin embargo, el derecho a añadir más elementos y atributos a los códigos XML está reservado para las posibles adiciones que se hagan en el archivo en el futuro.  Por este motivo, los clientes que lean el contenido del archivo descriptivo deben estar abiertos a encontrarse con elementos y atributos desconocidos.

Los clientes que modifiquen, supriman o sustituyan el archivo descriptivo del proyecto lo hacen bajo su propia responsabilidad.  En general, los proyectos cuyos archivos descriptivos falten o no sean válidos no se podrán utilizar.  Si en el momento del inicio del área de trabajo se descubre un proyecto cuyo archivo descriptivo no es válido, el proyecto queda cerrado y no será posible abrirlo mientras no se haya reparado el archivo descriptivo.  Normalmente, el área de trabajo no intentará reparar automáticamente un archivo descriptivo que falte o no sea válido.  Sin embargo, los archivos descriptivos del proyecto se regenerarán durante la operación de guardar el área de trabajo y en las llamadas al método IProject.setDescription.

Las modificaciones realizadas en el archivo descriptivo del proyecto tienen casi el mismo efecto que cuando se cambia la descripción del proyecto por medio del método IProject.setDescription.  No obstante, cuando se añaden o eliminan naturalezas del proyecto, no se desencadenará el correspondiente método de configuración o desconfiguración de la naturaleza.  Además, se pasan por alto los cambios que se realicen en el nombre del proyecto.

Si se crea un proyecto nuevo en una ubicación que contiene un archivo descriptivo existente, se respetará el contenido de dicho archivo descriptivo como descripción del proyecto.  No obstante, se hará caso omiso del nombre de proyecto situado en el archivo si no coincide con el nombre del proyecto que se está creando.  Si el archivo descriptivo que hay en disco no es válido, la creación del proyecto fallará.


 

Códigos de configuración:

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

Ejemplos: a continuación figura un ejemplo de archivo descriptivo de proyecto:  El proyecto tiene configurados un solo constructor y una sola naturaleza, además de algunas referencias a proyectos.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>WinterProject</name>
    <comment>Este es un proyecto atractivo.</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>

Información sobre las API: el contenido del archivo descriptivo del proyecto se correlaciona con la interfaz org.eclipse.core.resources.IProjectDescription. El método IProject.setDescription() puede sobreescribir el archivo descriptivo del proyecto.