Предполагая, что библиотеки не меняют расположение с компиляции на исполняемый файл jar, вы можете создать элемент пути к вашему classpath за пределами цели компиляции, например:
<path id="compile.classpath">
<fileset dir="lib" includes="**/*.jar"/>
</path>
Затем вы можете использовать созданный путь внутри задачи javac вместо текущего пути к классам.
<classpath refid="compile.classpath"/>
Затем вы можете использовать путь для установки пути манифеста.
<target name="jar" depends="compile">
<manifestclasspath property="jar.classpath" jarfile="build\jar\MyJar.jar">
<classpath refid="compile.classpath"/>
</manifestclasspath>
<jar destfile="build\jar\MyJar.jar" basedir="build\classes" >
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</jar>
</target>
manifestclasspath генерирует правильно отформатированный classpath для использования в файле манифеста, который должен быть перенесен после 72 символов. Длинные пути к классам, которые содержат много jar-файлов или длинные пути, могут работать неправильно без использования задачи manifestclasspath.