我考虑在现有项目中使用AspectJ。
我有几个纯Java Eclipse项目,我喜欢创建一个AOP项目。
我不太确定什么时候需要ajc,什么时候是可选的。我们使用Ant (带有javac)作为我们的主构建,我希望避免更改构建。
可能的情况如下:
我有一个支持AspectJ的Eclipse,并创建了我的方面项目。我从中创建了一个jar,并将这个jar与aspectj jar一起包含在正常的eclipse工作区和其他项目中。构建包括我的方面jar和aspectj jar,作为javac的依赖jar。
这对于处理方面来说足够了吗?或者,应用程序的每个项目都需要用ajc编译吗?
主要目标是尽可能保持Eclipse设置和构建环境的当前结构。
或者,这只有注解样式才能实现?(如果是这样的话,是否有人可以链接我一些关于weaver的信息,以及如何在运行时做到这一点?)
谢谢
发布于 2011-09-22 00:39:07
如果你想把你的方面编织到你的代码库中,你必须使用AJC。如果你只使用javac,即使有注解,你的代码也不会由你的方面编织。
也就是说,您不需要在ant构建中添加太多内容。
像这样的东西应该可以完成这项工作:
<path id="ajclasspath">
<path refid="classpath"/>
<pathelement location="${scm.home}/ant_libs/aspectjrt.jar"/>
</path>
<iajc inpath="${classes.dir}" destDir="${classes.dir}" fork="true" maxmem="${aspectj.maxmem}">
<argfiles refid="aspectj.argfiles.path"/>
<classpath refid="ajclasspath"/>
</iajc>实际上,您只需像普通一样构建,并使用iajc添加一个步骤,将javac编译的输出目录作为inpath,然后将结果放在相同的目录中。
您还可以将jar作为iajc的输入,并生成一个包含所有内容的jar。
编辑:或者你可以使用运行时编织,如果你的应用程序是一个web应用程序,这并不是太糟糕。如果没有,我不推荐运行时编织,因为每次启动应用程序时,启动时间可能要长得多。我在运行时编织方面没有太多经验,但你可以去看看。我知道你需要一个aop.xml来定义你的方面。
问候
https://stackoverflow.com/questions/7456557
复制相似问题