这应该很简单。
问题
您如何在一个项目中获得切入点来建议另一个项目中的代码/类?
上下文
我正在 Eclipse 中使用两个项目。为了便于解释,我们称一个科学项目和另一个数学项目,并说科学项目依赖于数学项目,我正在同时开发这两个项目。数学项目是核心产品,在生产中,如果我不修改代码,生活会更轻松。
目前,我正在调试这两个项目之间的交互。为了帮助解决这个问题,我正在编写一个 Aspect(在科学项目中)以在数学代码(和科学代码)执行时记录关键信息。
示例
我按照以下方式运行一个简单的示例方面:
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
问题
问题是,无论我创建什么切入点,它都只建议来自科学项目的代码。没有任何课程
org.math.example
是横切的,根本没有!我尝试通过转到并单击添加项目并选择数学项目来将数学项目添加到科学项目的路径中。那没有用,但似乎我需要按照这些思路做一些事情。
proect properties > AspectJ Build > Inpath
在此先感谢您的任何建议...
-g男性
编辑 1:
自从写这篇文章以来,我注意到该项目出现以下错误:
引起:org.aspectj.weaver.BCException:无法继续,这个版本的AspectJ 支持使用 weaver 6.0 版构建的类,但该类 com.our.project.adapter.GenericMessagingAdapter 是 7.0 版 当批量构建 BuildConfig[null] #Files=52 AopXmls=#0
所以也许这是正确设置的并且错误更加微妙。顺便说一句,可以这么说,提到的课程来自“科学项目”。即使在我清理项目之后也会发生这种情况。我目前正在谷歌搜索这个错误......
编辑 2:我在此处的评论 #5
中找到了上述错误的解决方案
问题是 maven-aspectj-plugin 的 pom 文件声明了对 aspectjtools 版本 1.6.7 的依赖。因此,在配置插件时,必须修改临时依赖项。这是通过指定版本 1.6.9 而不是 1.6.7 来解决问题的 pom 文件的相关代码片段:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.9</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>