Archivadores de características

La información de empaquetado de características se coloca en un archivo .jar Java independiente. Los recursos jar Java estándar se emplean para construir archivadores de características. Los archivadores de características hacen referencia a archivadores de conectores empaquetados por separado (vea el apartado siguiente) y a archivos no de conector.

Las características se identifican con un identificador estructurado que toma como base el nombre del dominio Internet del proveedor. Por ejemplo, la organización eclipse.org produce la característica org.eclipse.jdt. El juego de caracteres que se emplea para los identificadores de una característica es precisamente el que esté especificado para los identificadores de la característica (vea Manifiesto de conector).

El convenio recomendado para denominar los archivadores de características es:
<id>_<versión>.jar

Donde <id> es el identificador de la característica y <versión> es el identificador completo de la versión, que está en el correspondiente archivo feature.xml. Tenga en cuenta que este es un convenio recomendado que minimiza la probabilidad de que se produzcan colisiones, pero no viene impuesto por la arquitectura de Eclipse. Por ejemplo, los siguientes nombres también son válidos para los archivadores de características:

org.eclipse.jdt_2.0.0.jar
org.eclipse.pde_2.0.jar
mi_característica.jar

Internamente, cada archivador de característica se empaqueta de forma relativa al correspondiente directorio de la característica (sin incluir el elemento de vía de acceso del directorio). La estructura del archivador es la siguiente:

feature.xml
feature<_entornoLocal>.properties (vea "Información de característica traducida")
otros archivos y subdirectorios de la característica (TBD)
META-INF/
    archivos de manifiesto y de seguridad jar Java

Manifiesto de una característica

El formato del manifiesto de una característica viene definido por la siguiente dtd:

<?xml encoding="ISO-8859-1"?>

<!ELEMENT feature (install-handler? | description? | copyright? | license? | url? | includes* | requires? | plugin* | data*)>
<!ATTLIST feature
    id            CDATA #REQUIRED
    version       CDATA #REQUIRED
    label         CDATA #IMPLIED
    provider-name CDATA #IMPLIED
    image         CDATA #IMPLIED
    os            CDATA #IMPLIED
    arch          CDATA #IMPLIED
    ws            CDATA #IMPLIED
    nl            CDATA #IMPLIED
    colocation-affinity
                  CDATA #IMPLIED
    primary       (true | false) "false"
    exclusive     (true | false) "false"
    plugin        CDATA #IMPLIED

    application   CDATA #IMPLIED
>

<!ELEMENT install-handler EMPTY>
<!ATTLIST install-handler
    library       CDATA #IMPLIED
    handler       CDATA #IMPLIED
>

<!ELEMENT description (#PCDATA)>
<!ATTLIST description
    url           CDATA #IMPLIED
>

<!ELEMENT copyright (#PCDATA)>
<!ATTLIST copyright
    url           CDATA #IMPLIED
>

<!ELEMENT license (#PCDATA)>
<!ATTLIST license
    url           CDATA #IMPLIED
>

<!ELEMENT url (update?, discovery*)>

<!ELEMENT update EMPTY>
<!ATTLIST update
    url           CDATA #REQUIRED
    label         CDATA #IMPLIED
>

<!ELEMENT discovery EMPTY>
<!ATTLIST discovery
    type          (web | update) "update"

    url           CDATA #REQUIRED
    label         CDATA #IMPLIED
>

<!ELEMENT includes EMPTY>
<!ATTLIST includes
    id                CDATA #REQUIRED
    version           CDATA #REQUIRED
    name              CDATA #IMPLIED
    optional          (true | false) "false"
    search-location   (root | self | both) "root"
    match             (perfect | equivalent | compatible | greaterOrEqual) "compatible"
>

<!ELEMENT requires (import+)>

<!ELEMENT import EMPTY>
<!ATTLIST import
    plugin        CDATA #IMPLIED
    feature       CDATA #IMPLIED

    version       CDATA #IMPLIED
    match         (perfect | equivalent | compatible | greaterOrEqual) "compatible"
    patch         (true | false) "false"

>

<!ELEMENT plugin EMPTY>
<!ATTLIST plugin
    id            CDATA #REQUIRED
    version       CDATA #REQUIRED
    fragment      (true | false) "false"
    os            CDATA #IMPLIED
    arch          CDATA #IMPLIED
    ws            CDATA #IMPLIED
    nl            CDATA #IMPLIED
    download-size CDATA #IMPLIED
    install-size  CDATA #IMPLIED
>

<!ELEMENT data EMPTY>
<!ATTLIST data
    id            CDATA #REQUIRED
    os            CDATA #IMPLIED
    arch          CDATA #IMPLIED
    ws            CDATA #IMPLIED
    nl            CDATA #IMPLIED
    download-size CDATA #IMPLIED
    install-size  CDATA #IMPLIED
>

Las definiciones del elemento y de los atributos son las siguientes:

Al interaccionar con el sitio de actualizaciones, la implementación de la característica correlaciona los elementos <plugin> y <data> con los identificadores de vía de acceso utilizados por el sitio para determinar los archivos reales que hay que bajar e instalar. La implementación de características por omisión suministrada por Eclipse construye los identificadores de vía de acceso de la siguiente manera: Observe que, en general, los documentos del manifiesto feature.xml deben especificar la codificación UTF-8. Por ejemplo

<?xml version="1.0" encoding="UTF-8"?>

El texto traducible contenido en el archivo feature.xml se puede separar en archivos feature<_entornoLocal>.properties siguiendo los convenios de los paquetes compuestos de propiedades Java. Fíjese en que las series traducidas se emplean en tiempo de instalación (es decir, no emplean el mecanismo de tiempo de ejecución de los fragmentos de conector). 

Copyright IBM Corporation y otros 2000, 2003.