iajc无法从jar中编织方面,但却从类文件中获胜

时间:2011-08-12 04:30:35

标签: ant jar aspectj compile-time-weaving

所以我为我的项目定义了iajc任务,它做了很好的intertype声明,然后有一个单独的jar任务创建了一个project.jar。

然后junit测试目标有iajc任务,这个任务引用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,则可以在<aspectpath>中使用该jar。

那么问题和评论就是:

Q值。是否有一些参数可以使它适用于常规的<jar>任务?

℃。我必须使用outjar的事实根本没有记录 - 提到了输出jar的选项,但它没有说明这是生产一个可行的jar的唯一方法。

0 个答案:

没有答案