3

Maven ビルドのプロジェクトがあり、基本的なパフォーマンス トレースをメソッドに追加する必要があります。これには AspectJ を使用することにしました。主な要件は、トレースの側面を本番クラスに織り込むことですが、単体テストの実行フェーズのみです

Maven でウィービングを構成できましたが、テストの実行後、アスペクトが適用された同じプロダクション クラスがパッケージ化された戦争に移行します。

このケースはかなり一般的なように見えますが、Web で解決策を見つけることができませんでした。

4

4 に答える 4

2

アスペクトをテスト ディレクトリに配置し、テスト コンパイル構成で weaveMainSourceFolder フラグを true に設定できます。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.4</version>
    <configuration>
        <showWeaveInfo>true</showWeaveInfo>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
        <executions>
            <execution>
                <id>test-compile</id>
                <configuration>
                    <weaveMainSourceFolder>true</weaveMainSourceFolder>
                </configuration>
                <goals>
                    <goal>test-compile</goal>
                </goals>
            </execution>
        </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
</plugin>

http://mojo.codehaus.org/aspectj-maven-plugin/test-compile-mojo.htmlを参照してください。

于 2013-07-12T17:35:27.963 に答える
0

専用モジュールでこれを行い、Maven Dependencyプラグインを使用して、generate-test-sourcesフェーズ中に「テスト中」のアーティファクトを解凍し、クラスを織り、最後にテストを実行します。


私が何を意味するのかを説明しようと思います。次のプロジェクト構造を想像してみましょう。

。
|-pom.xml
`-some-module//これは私たちが織りたいモジュールです
    |-pom.xml //ただし、テスト目的のみ
    `-..。

だから私の提案はこのようなことをすることです:

。
|-pom.xml
|-some-module      
| |-pom.xml      
| `-..。
`-test-module //必要がないので、ここでクラスを織ります
    |-pom.xml//「本番」jarにパッケージ化されるトレースアスペクト
    `-..。

アイデアは、テストしたいアーティファクトをアンパックする追加の「テストモジュール」を用意して、「実際の」本番jarに影響を与えずにクラスを織り上げることができるようにすることです。

これを行うには、テスト対象のモジュールへの依存関係を宣言し、AspectJプラグインを呼び出して「メイン」クラスを作成する前に、を使用dependency:unpackしてクラスをアンパックします。target/classes

于 2010-09-27T17:16:58.680 に答える
-1

AspectJコンパイラMavenプラグインで提供されているサンプルに基づく-次のような使用法が機能するはずです。

<project>
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
               </executions>
           </plugin>
           ...
       </plugins>
   <build>
   ...
</project>
于 2010-09-28T04:08:22.347 に答える