Итак, я определил задачу 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, который будет работать.