倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Aspectj -- test-compile ゴールとテスト・コード内のアスペクトの織り込み

aspect-maven-plugin には前回まで見ていた「compile ゴール」の他に、「test-compile ゴール」が定義されています。 このゴールはテスト・コードに対して「コンパイル」と「織り込み」を行います。 

「test-compile ゴール」に定義されているパラメータは、前回まで見ていた「compile ゴール」のパラメータに加えて

  • weaveMainSourceFolder
  • weaveWithAspectsInMainSourceFolder

の2つが定義されています。 これらはソース・コード、テスト・コードに含まれているアスペクト、クラス間の「織り込み」を設定します。

パラメータの内容

各パラメータの内容とデフォルト値は以下の通り:

パラメータ名 デフォルト値 説明
weaveMainSourceFolder false テスト・コードに含まれるアスペクトをソース・コードのクラスに織り込むかどうか。
weaveWithAspectsInMainSourceFolder true ソース・コードに含まれるアスペクトをテスト・コードのクラスに織り込むかどうか。

「src/main/java」「src/test/java」に配置されているアスペクトの織り込みを図示すると、下図のようになります*1

f:id:waman:20071120060026p:image

設定方法

設定方法は前回までに「compile ゴール」のパラメータを設定していた方法と同じです:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.5.0</version>
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <configuration>
          <!-- ここに設定を追加 -->
          <weaveMainSourceFolder>true</weaveMainSourceFolder>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>test-compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

*1:「src/main/aspect」「src/test/aspect」に含まれているアスペクトは、それぞれ「src/main/java」「src/test/java」に含まれているアスペクトと同じように織り込まれます。