Почему безголовый PDE Build опускает каталоги, которые я указал в bin.include build.properties? - PullRequest
0 голосов
/ 06 мая 2010

Один из моих плагинов Eclipse (комплекты OSGi) должен содержать каталог (Database Elements) файлов .sql. Мои build.properties показывает:

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

(... что мне подходит.)

Когда я собираю и запускаю из своей интерактивной среды разработки Eclipse, все работает нормально: вызовы Bundle.getEntry(String) и Bundle.findEntries(String, String, bool) возвращают действительные URL объекты; мои тесты счастливы; мой код счастлив.

Когда я строю с помощью сценария безголового муравья (используя PDE Build), те же самые вызовы возвращают null. Мои тесты ломаются; мой код ломается. Я обнаружил, что Database Elements тихо, но просто отсутствует в пакете JAR моего плагина. (META-INF и встроенные классы все еще делают его там нормально.) Я просмотрел журнал сборки (даже в конечном итоге вызвав ant -verbose в соответствующей части сценария сборки), но не увидел упоминания о чем-либо полезном.

Что дает?

1 Ответ

0 голосов
/ 06 мая 2010

Похоже, что была ошибка (хотя я не смог найти цитату Bugzilla) в процессе генерации ant-скрипта PDE Build начиная с версии 3.2, в результате которого был получен фрагмент скрипта ant build.xml, подобный этому из bin.includes:

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

В соответствующей документации Ant говорится, что includes содержит "список шаблонов, разделенных запятыми или пробелами". Таким образом (поскольку мое имя каталога содержит пробел и было скопировано буквально в значение атрибута includes), я думаю, что задача copy пыталась включить файл с именем Database и каталог с именем Elements/. Ни один из них не существовал, поэтому они были тихо проигнорированы. Я подозреваю, что та же проблема была бы укушена, если бы в имени каталога была запятая, но я не проверял это.

Поскольку я использую Eclipse 3.5 в интерактивном режиме, я решил, наконец, отделить экземпляр Eclipse моей безголовой сборки от моей целевой платформы (которая пока остается на уровне 3.2) и обновить мою безголовую сборку PDE до 3.5 (пытаясь произвести минимальная конфигурация сборки PDE из плагинов моего интерактивного экземпляра). Теперь сгенерированный build.xml содержит это вместо:

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

Соответствующая Ant документация на этот раз указывает, что единственными специальными символами в отдельном include являются * и ?. Действительно, эта ошибка, кажется, была исправлена ​​где-то между 3.2 и 3.5: моя безголовая сборка PDE на базе 3.5 теперь производит плагин, содержащий Database Elements; мои тесты счастливы; мой код счастлив; Я счастлив.

...