2010-05-06 20 views
0

Un de mes plug-ins Eclipse (bundles OSGi) est censé contenir un répertoire (Database Elements) de fichiers .sql. Mes build.properties spectacles:Pourquoi est-ce que PDE Build headless omet les répertoires que j'ai spécifiés dans bin.includes de build.properties?

bin.includes = META-INF/,\ 
      .,\ 
      Database Elements/ 

(... qui semble juste pour moi.)

Lorsque je construis et courir à partir de mon interactive Eclipse IDE, tout fonctionne bien: appels à Bundle.getEntry(String) et Bundle.findEntries(String, String, bool) retour valide URL objets; mes tests sont heureux; mon code est heureux.

Lorsque je compile par script ant sans tête (à l'aide de PDE Build), ces mêmes appels finissent par retourner null. Mes tests se brisent; mon code casse. Je trouve que Database Elements est discrètement mais simplement manquant dans le paquet JAR de mon plug-in. (META-INF et les classes construites font encore là dedans bien.) J'ai parcouru le log de construction (invoquant même finalement ant -verbose sur la partie appropriée du manuscrit de construction) mais n'ai vu aucune mention de quelque chose d'utile.

Ce qui donne?

Répondre

0

Il semble qu'il y avait un bug (bien que je ne pouvais pas rechercher une citation Bugzilla) dans le PDE Processus de génération de génération script ant que de 3,2 qui a produit un fragment de script ant build.xml comme celui-ci de la bin.includes:

<copy todir="${destination.temp.folder}/my_plugin" failonerror="true" overwrite="false"> 
    <fileset dir="${basedir}" includes="META-INF/,Database Elements/"   /> 
</copy> 

La référence Ant documentation indique que includes contient une "liste de modèles séparés par des espaces ou par des virgules". Ainsi (puisque mon nom de répertoire contient un espace et a été copié littéralement dans la valeur d'attribut includes) je pense que la tâche copy essayait d'inclure un fichier nommé Database et un répertoire nommé Elements/. Aucun des deux n'existait, alors ils ont été discrètement ignorés. Je pense que le même problème aurait mordu si j'avais une virgule dans mon nom de répertoire, mais je n'ai pas testé cela. Depuis que j'utilise Eclipse 3.5 interactivement, j'ai décidé de découpler finalement mon instance Eclipse de ma console sans tête de ma plate-forme cible (qui reste à 3.2 pour le moment) et de mettre à jour ma PDE sans tête à 3.5 (en essayant de produce a minimal PDE Build configuration plug-ins d'instance interactive). Maintenant, le produit build.xml contient ceci:

<copy todir="${destination.temp.folder}/my_plugin" failonerror="true" overwrite="true"> 
    <fileset dir="${basedir}"> 
     <include name="META-INF/"/> 
     <include name="Database Elements/"/> 
    </fileset> 
</copy> 

Le Ant documentation concerné cette fois-ci indique que les seuls caractères spéciaux dans une include individuelle sont * et ?. En effet, le bug semble avoir été corrigé entre 3.2 et 3.5: ma build PDE sans head à 3.5 produit maintenant un plugin qui contient Database Elements; mes tests sont heureux; mon code est heureux; Je suis heureux.

+1

C'était https://bugs.eclipse.org/bugs/show_bug.cgi?id=144846 corrigé dans 3.3 –