我正在处理OSGi知识的整体问题,并且遇到了一个问题,其中示例中的指令对于完全不熟悉Ant的人来说是不够的。
我正在按照jEdit并将其分解为捆绑包的示例,如OSGi in Action示例第6章中所述。其中一个步骤是编辑build.xml文件,特别是删除jar任务并将其替换为bnd定义。然后我被告知'添加指令告诉bnd将生成的包放在哪里'。这就是我感到困惑的地方,因为我之前没有使用过Ant,并计划在这个例子之外使用Maven。 我希望有人可以解释这个例子要求我做什么。案文如下(第6章第209页):
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。我到目前为止的编辑如下:
答案 0 :(得分:2)
这似乎是你的任务的官方文件:
输出和包含似乎是任务的属性
所以它可能是:
<bnd classpath="${build.directory}"
files="jedit-mega.bnd"
output = 'jedit.jar'/>
从命令行选项页面看,输出似乎执行以下操作:
覆盖默认输出名称 包或目录。如果 输出是一个目录,名称将 从bnd文件名派生。
但是包括在任何地方都没有提到。
也可能是这些值适用于bnd-File本身(看起来合理): http://www.aqute.biz/Bnd/Format