Задача BND Ant — обернуть jar-файлы, отличные от OSGi

Я пытаюсь использовать задачу Ant bndwrap для переноса файлов jar, отличных от OSGi, в каталог. Моя текущая конфигурация Ant для этого:

<target name="wrap-jars" description="Wrap non-OSGi jars">
    <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${biz.aQute:bnd:jar}"/>
    <bndwrap output="${dist.dir}/app-modules">
        <fileset dir="${dist.dir}/app-modules" includes="*.jar" />
    </bndwrap>
    <move overwrite="true" todir="${dist.dir}/app-modules" >
        <fileset dir="${dist.dir}/app-modules" includes="*.bar" />
        <mapper type="glob" from="*.bar" to="*.jar" />
    </move>
</target>

Это прекрасно работает, но проблема в том, что он также обертывает существующий jar OSGi, что вызывает проблемы. Например, я заметил, что он изменяет заголовок Bundle-SymbolicName на какое-то значение по умолчанию. Это может быть изменение чего-то еще, чего я не хочу. Я хочу, чтобы он работал только с банками, у которых вообще нет информации OSGi.

Есть ли способ заставить BND игнорировать существующие заголовки OSGi в манифесте или заполнить jar-файлы, которые уже поддерживаются OSGi?


person vdjurovic    schedule 17.11.2011    source источник


Ответы (3)


Я бы хранил jar-файлы, отличные от OSGi, в отдельной папке и модифицировал fileset для обработки только этой папки.

person palacsint    schedule 17.11.2011
comment
Хм, это идея, но это усложнит ситуацию на другом фронте. В моем проекте упаковка выполняется автоматически, и я не могу определить, совместимы ли jar-файлы с OSGi или нет. Я думал использовать для этого файл определений BND, но понятия не имею, как это сделать. - person vdjurovic; 17.11.2011
comment
Возможно, вы можете изменить источник bnd и использовать собственный форк bnd. Муравьиные задачи обычно не слишком сложны. - person palacsint; 17.11.2011
comment
На самом деле я вызываю эту задачу из Maven, поэтому я бы предпочел использовать стандартный BND. Но я мог бы понять что-то из исходного кода задачи. - person vdjurovic; 18.11.2011

Я заметил, что последние версии bnd (например, 2.1.0) теперь учитывают Bundle-SymbolicName при перепаковке jar-файлов OSGi.

person Holly Cummins    schedule 06.03.2013

просто измените свой набор файлов, чтобы исключить эту банку

person user63233    schedule 12.08.2013
comment
Привет! Добро пожаловать в Stack Overflow. Этот ответ немного разреженный - не могли бы вы уточнить, возможно, пример или объяснение того, как это отвечает на вопрос ОП? Спасибо! - person Anthony Neace; 13.08.2013