Ich stand schon öfters vor dem Problem, das ich eine per "path" deklarierte Dateimenge in eine Liste umwandeln mußte, z.B. um alle Libs in das Class-Path Element der Manifest-Datei zu schreiben. Aus Zeitmangel hatte ich mir bisher leider immer für die händische Variante entschieden, dabei ist die Lösung so einfach.
Definieren eines Path:
<!-- Classpath declaration -->
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
</path>
Dieser kann nun per Task "pathconvert"
<!-- convert the libraries to be included in the Class-Path
attribute of the MANIFEST.MF file -->
<pathconvert property="lib.project.manifest.classpath"
pathsep=" ">
<path refid="project.classpath"/>
<flattenmapper/>
</pathconvert>
Die Einbindung in das Manifest ist dann einfach:
<target name="build-jar" depends="compile,copymetafiles">
<jar destfile="${build.dir}/intel.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class"
value="org.me.startmeup"/>
<attribute name="Class-Path"
value="${lib.project.manifest.classpath}"/>
</manifest>
</jar>
</target>
Warum ich das nicht schon eher gefunden hab? Keine Ahnung, schließlich ist "pathconvert" direkt unter den Core Tasks unter ant.apache.org gelistet.
1 comments:
Hat mir gerad sehr geholfen, thx.
Post a Comment