не могли бы вы просто обновить цель компиляции iajc, чтобы использовать новый jar на пути к классам?
Невозможно заставить загрузчик классов отдавать предпочтение одному файлу jar другому. Если вы должны относиться к нескольким версиям одного и того же класса, то вам следует рассмотреть OSGI.
Самое простое решение - просто использовать библиотеки из проекта или репозитория Maven / Ivy и игнорировать библиотеки в вашей глобальной папке ant.
Пример:
<taskdef
resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
<classpath>
<pathelement location="${basedir.dir}/lib/aspectjtools.jar"/>
</classpath>
</taskdef>
<target name="compile" >
<iajc outjar="demo.jar">
<sourceroots>
<pathelement location=”src” />
</sourceroots>
<aspectpath>
<pathelement
location="aspects_to_be_weaved_with_classes_in_sourceroots.jar" />
</aspectpath>
<classpath>
<pathelement location="${basedir}/lib/aspectjrt.jar"/>
</classpath>
</iajc>
</target>
Изменено:
Вы также должны использовать другого муравья. Если вы используете Eclipse, попробуйте в комплекте прямо из представления Ant.
У вас также есть другой вариант, но он немного сложнее. То есть вместо этого использовать ткачество времени загрузки AspectJ. Если вы выберете эту опцию, вы можете скомпилировать обычную задачу компиляции, но вы должны выполнить переплетение с агентом JVM при запуске. Подробнее об этом можно прочитать здесь .
Надеюсь, это поможет!