這應該很簡單。AspectJ:如何讓切入點通知位於其他項目中的類
問題
你如何在一個項目一個切入點到另一個項目中建議的代碼/類?
上下文
我在eclipse中與兩個項目工作。爲了便於說明,我們姑且稱之爲一個 科學項目和其他 數學項目說科學項目依託數學項目,我在這兩個項目開發,兼營。數學項目是生產中的核心產品,如果我不修改代碼,生活將變得更加簡單。
目前,我正在調試這兩個項目之間的交互。爲了提供幫助,我正在編寫一個方面(在科學項目中),以便在數學代碼(和科學代碼)執行時記錄關鍵信息。
例
我運行沿着線的簡單示例方面:
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
問題
的問題是,無論創建什麼切入點,它僅建議來自 科學計劃的代碼。從
org.math.example
沒有類是橫切,在所有!
我試圖去
proect properties > AspectJ Build > Inpath
和點擊
添加項目並選擇
數學項目加入
數學項目到
INPATH的科學項目的。這不起作用,但似乎我需要沿着這些路線做些事情。
感謝,提前,對於任何建議...
-gMale
編輯1:
既然寫這個,我已經注意到這個項目是給了以下錯誤:
Caused by: org.aspectj.weaver.BCException: Unable to continue, this version of AspectJ supports classes built with weaver version 6.0 but the class com.our.project.adapter.GenericMessagingAdapter is version 7.0 when batch building BuildConfig[null] #Files=52 AopXmls=#0
所以也許這是安裝正確,錯誤更微妙。順便說一句,所提到的課程來自「科學項目」,可以這麼說。甚至在我清理項目之後,這種情況也會發生我目前正在使用Google這個錯誤...
編輯2:
我發現上面 comment #5 here
解決錯誤的問題是Maven的AspectJ的插件的POM文件聲明上aspectjtools版本1.6的依賴0.7。所以,在配置插件時,必須修改該瞬態依賴關係。以下是通過指定版本1.6.9而不是1.6修復問題的pom文件的相關代碼片段。7:
<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>
謝謝,你完全正確。我剛剛解決了這個例外,並相應地更新了我的問題。不幸的是,出於時間原因,我基本上被指示將「數學項目」直接引入「科學項目」。顯然,這樣可以避免這個問題,但我無法確定修復第二個bug的影響,因爲現在代碼庫完全不同,而且在顛覆中回溯會花費太多時間。謝謝你的幫助。既然你是唯一的迴應,我就會投票給你所有的信息並獎勵你的答案。謝謝! – gMale 2010-09-11 02:26:11