これは単純なはずです。
質問
あるプロジェクトでポイントカットを取得して、別のプロジェクト内のコード/クラスにアドバイスするにはどうすればよいですか?
コンテキスト
私は 2 つのプロジェクトで日食に取り組んでいます。説明を簡単にするために、1 つの科学プロジェクトともう 1 つの数学プロジェクトを呼び出し、科学プロジェクトは数学プロジェクトに依存しており、両方のプロジェクトで同時に開発を行っているとします。数学プロジェクトは本番環境のコア製品であり、コードをあまり変更しなければ生活は楽になります。
現在、これら 2 つのプロジェクト間の相互作用をデバッグしています。これを支援するために、数学コード (および科学コード) の実行時に重要な情報をログに記録する Aspect (科学プロジェクト内) を作成しています。
例
次の行に沿って単純なサンプル アスペクトを実行します。
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
問題問題は、私が作成したポイントカットに関係なく、科学プロジェクト
のコードしかアドバイスしないことです。からのクラスはクロスカットではありません。add projectに移動してクリックし、数学プロジェクトを選択して、数学プロジェクトを科学プロジェクトのinpathに追加してみました。それはうまくいきませんでしたが、それらの線に沿って何かをする必要があるようです.
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.7 ではなくバージョン 1.6.9 を指定して問題を修正する 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>