Я строю ant-скрипт, где использую bnd task для генерации output.jar. перед заданием bnd я создал / скопировал несколько jar (a.jar, b.jar и т. д.). Теперь я хотел бы вставить / включить эти jar-файлы в папку lib файла output.jar.
output.jar---|
lib----|
a.jar
b.jar
META-INF---|
MANIFEST.MF
Кроме того, я хотел бы передать jar-файлы classpath (ieajar и т. Д.) В виде динамически сгенерированного абсолютного пути изСкрипт муравья, а не какой-либо относительный / жестко заданный путь внутри bnd файла
Но сделать это невозможно. Банки с classpath устанавливаются как разнесенные каталоги внутри output.jar
output.jar ---|
com
sun
META-INF---|
MANIFEST.MF
Я использовал аргумент classpath в задаче bnd для передачи jar classpath. Также добавлен include-ресурс в bnd файл для этих jar-файлов.
ant file
<taskdef resource="aQute/bnd/ant/taskdef.properties"
classpath="${build.jar}/biz.aQute.bnd.jar"/>
<path id="bnd.classpath">
<fileset dir="${build.jar}/">
<include name="a.jar" />
<include name="b.jar" />
<include name="c.jar" />
</fileset>
</path>
<pathconvert property="bnd.classpath.string" pathsep=",">
<path refid="bnd.classpath" />
<mapper>
<chainedmapper>
<flattenmapper/>
<regexpmapper from="(.*)"
to="${build.jar}/\1" casesensitive="no"/>
</chainedmapper>
</mapper>
</pathconvert>
<echo>${bnd.classpath.string}</echo>
<bnd
failok="false"
eclipse="false"
exceptions="true"
output="${dist.internal.res}/output.jar"
files="${resources}/cc.bnd"/>
cc.bnd
Bundle-SymbolicName: output.plugin
ver: 6.0.3
Bundle-Version: ${ver}
Bundle-Description: plugin jar
Export-Package: *
Import-Package: *
Private-Package: *
Я также пытался использовать
-includeresource: \
@${abc}/lib/a.jar,\
, но
1) По-прежнему получать разнесенные каталоги вместо встроенных jar-файлов 2) Как передать абсолютные каталоги (то есть $ {abc}), пропущенные через скрипт ant