#ant #osgi
#ant #osgi
Вопрос:
Я пытаюсь разобраться с монолитом знаний, которым является OSGi, и столкнулся с проблемой, когда инструкций в примере недостаточно для человека, совершенно не знакомого с Ant.
Я следую примеру использования jEdit и разбиения его на пакеты, как описано в примере главы 6 OSGi в действии. Одним из первых шагов является редактирование build.xml файл, специально предназначенный для удаления задачи jar и замены ее определением bnd. И затем мне говорят «добавить инструкции, чтобы сообщить bnd, куда поместить сгенерированный пакет». И вот тут я запутался, потому что я раньше не работал с Ant и планирую использовать Maven за пределами этого примера. Я надеюсь, что кто-нибудь может объяснить, что пример просит меня сделать. Текст выглядит следующим образом (на странице 209 главы 6):
First, comment out the jar task:
<!-- jar jarfile="jedit.jar"
manifest="org/gjt/sp/jedit/jedit.manifest"
compress="false">
...
</jar -->
The first line above shows where to put the JAR file,
and the second lists fixed manifest entries. Next,
add the bnd definition and target task:
<taskdef resource="aQute/bnd/ant/taskdef.properties"
classpath="../../../lib/bnd-0.0.384.jar" />
<bnd classpath="${build.directory}"
files="jedit-mega.bnd" />
Here, you first give the location of the bnd JAR file to tell
Ant where it can find the bnd task definition. Then you specify
a bnd task to create your bundle JAR file, giving it the project
class path and the file containing your bnd instructions....The
first thing you must add is an instruction to tell bnd where to
put the generated bundle:
-output: jedit.jar
The bnd task can also copy additional manifest headers into the final
manifest, so let’s ask bnd to include the original jEdit manifest rather
than duplicate its content in your new file:
-include: org/gjt/sp/jedit/jedit.manifest
В принципе, я понятия не имею, что делать с -output и -include. Мои правки на данный момент заключаются в следующем:
Ответ №1:
Похоже, это официальный документ вашей задачи bnd:
вывод и включение, похоже, являются атрибутами задачи
Так что это может быть:
<bnd classpath="${build.directory}"
files="jedit-mega.bnd"
output = 'jedit.jar'/>
И на странице параметров командной строки кажется, что вывод выполняется следующим образом:
Переопределите выходное имя пакета или каталога по умолчанию. Если результатом является каталог, имя будет производным от имени файла bnd.
Но включение нигде не упоминается.
Также может быть, что эти значения предназначены для самого bnd-файла (кажется разумным):http://www.aqute.biz/Bnd/Format
Комментарии:
1. ага — да. Вы правы насчет bnd-файла. Теперь я читаю этот раздел совершенно по-другому. По какой-то причине я думал, что файл bnd будет готовым результатом, а не чем-то, что я должен был создать сам.