我考虑在现有项目中使用AspectJ。
我有几个纯Java Eclipse项目,我喜欢创建一个AOP项目。
我不太确定何时需要ajc以及何时可选。我们使用Ant(使用javac)作为我们的主要构建,我想避免更改构建。
以下是可能的:
我有一个AspectJ启用Eclipse并创建我的方面项目。我从这里创建了一个jar,并在正常的eclipse工作区中将其与aspectj jar一起包含在其他项目中。 构建包括我的方面jar和aspectj jar作为依赖jars与javac。
这对于处理这些方面是否足够? 或者是否需要使用ajc编译应用程序的每个项目?
主要目标是尽可能保持Eclipse设置和构建环境的当前结构。
或者这只能用注释样式吗? (如果是这样,有人可以链接我关于织工的一些信息以及如何在运行时这样做吗?)
谢谢
答案 0 :(得分:1)
如果您想将自己的方面编织到代码库中,则必须使用AJC。如果您只使用javac,即使使用注释,您的代码也不会被您的方面编织。
话虽如此,你不必为你的蚂蚁构建添加很多东西。
这样的事情应该可以胜任:
<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,并将结果放在同一目录中。
你也可以把一个罐子当作iajc的输入,生成一个装有你所有东西的罐子。
编辑:或者您可以使用运行时编织,如果您的应用是一个Web应用程序,它也不是太糟糕。如果没有,我不建议运行时编织,因为每次启动应用程序时,启动可能会更长。我没有很多运行时编织的经验,但你可以检查一下。我知道你需要一个aop.xml来定义你的方面。
此致