iajc не удается сплести аспекты из jar, но удается из файлов классов

Итак, я определил задачу iajc для своего проекта, которая отлично справляется с объявлениями интертипа, а затем есть отдельная задача jar, которая создает файл project.jar.

Затем есть задача iajc для тестовой цели junit, эта задача ссылается на project.jar с целью вплетения его ITD в тестовые классы следующим образом:

<aspectpath>
<pathelement path="${dist}/project.jar"/>
<fileset dir="${lib.aspect}">
    <include name="**/*.jar" />
    <include name="**/*.zip" />
</fileset>
</aspectpath>

Это не работает - компилятор выдает ошибки типа class "com....Foo" has to implement method doThings() defined in interface Bar

Затем я меняю <aspectpath> на это:

<aspectpath>
<pathelement location="${build.dir}"/>
<fileset dir="${lib.aspect}">
    <include name="**/*.jar" />
    <include name="**/*.zip" />
</fileset>
</aspectpath>

который в основном использует файлы промежуточного класса, сгенерированные компилятором, и отлично работает.

Затем я обнаружил, что если я использую опцию outjar вместо destdir в моей задаче iajc, то этот jar можно использовать в <aspectpath>.

Тогда вопрос и комментарий:

В. Есть ли какой-то параметр, который заставит его работать с обычной задачей <jar>?

C. тот факт, что я должен использовать outjar, вообще не документирован - упоминается возможность вывода jar, но нигде не говорится, что это единственный способ создать jar, который будет работать.


person TJunkie    schedule 12.08.2011    source источник