Редактирование файла ant build.xml для примера OSGi - непонимание инструкции - PullRequest
2 голосов
/ 03 мая 2011

Я занимаюсь монолитом знаний, который является 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. Мои правки таковы:

jEdit build.xml screenshot

1 Ответ

2 голосов
/ 03 мая 2011

Похоже, это официальный документ вашей задачи bnd:

http://www.aqute.biz/Bnd/Ant

вывод и include являются атрибутами задачи

Так может быть:

<bnd classpath="${build.directory}"           
  files="jedit-mega.bnd" 
  output = 'jedit.jar'/>

А со страницы параметров командной строки кажется, что выходные данные делают следующее:

Переопределить имя вывода по умолчанию комплект или каталог. Если выходной каталог, имя будет быть полученным из имени файла bnd.

Но include нигде не упоминается.

Также может быть, что эти значения предназначены для самого bnd-файла (кажется разумным): http://www.aqute.biz/Bnd/Format

...