Вы можете использовать элемент pathelement
. Пример:
<!-- Define the CLASSPATH -->
<path id="compile.classpath">
<pathelement location="lib/resources.jar" />
</path>
Затем указывайте id
при использовании элемента javac
. Пример:
<javac srcdir="${src.home}" destdir="${work.home}/bin" debug="on">
<classpath refid="compile.classpath" />
</javac>
Лучше поставить каждый из вышеперечисленных под свои targets
, (для меня в любом случае).
Вы также можете использовать несколько элементов pathelement
в элементе path
для более чем одной ссылки на банку.
Если вы хотите, чтобы ваш jar-файл ссылался на другой jar-файл, вы можете поместить ссылки в MANIFEST.MF, ниже приведен пример создания манифеста с использованием ant.
<target name="create_manifest">
<manifest file="${work.home}/META-INF/MANIFEST.MF">
<attribute name="Manifest-Version" value="1.0" />
<attribute name="Version" value="${app.version}" />
<attribute name="Company" value="Comp Name here" />
<attribute name="Project" value="${app.name}" />
<attribute name="Java-Version" value="${java.version}" />
<!--Here is the reference to jar files this jar manifest will reference.-->
<attribute name="Class-Path" value="one.jar two.jar three.jar etc.jar" />
</manifest>
</target>
Ниже приведен пример target
s для копирования и включения файлов классов и указания на правильный манифест при создании jar
.
<target name="create_jar" depends="create_manifest, copy_all_class_files">
<jar destfile="${guiJar}" manifest="jar_temp/META-INF/MANIFEST.MF" basedir="jar_temp">
</jar>
</target>
<target name="copy_all_class_files">
<copy todir="jar_temp">
<fileset dir="classes">
<include name="*/**" />
</fileset>
</copy>
</target>
Вы заметите, что тег depends
имеет create_manifest
и copy_all_class_files
в качестве зависимости.
Как вы знаете, цели зависимостей будут запускаться первыми для target
, таким образом вы сможете убедиться, что ваш заказ правильный.
Я думаю, что частью вашей проблемы является сложность файла ant.
Попробуйте разбить каждую из ваших задач на отдельные цели и решить задачу для каждой цели, прежде чем переходить к следующей.
Таким образом, вы можете убедиться, что все ваши предыдущие материалы работают должным образом, и вам не придется беспокоиться о том, что предыдущие задачи не работают должным образом.