3

私はSpringのトランザクションコードを織り込むためにaspectjでコンパイル時の織りを使用しているので、@Transactional. Eclipse (aspectj-maven-plugin を使用) 内から maven compile を実行すると、Eclipse は Tomcat サーバーと同期し、すべてがうまくいきます。

しかし、Eclipse がコンパイル (プロジェクト -> 自動的にビルド) すると、Spring トランザクション コードが織り込まれていないように見え、次のエラーが発生します。

javax.persistence.TransactionRequiredException: no transaction is in progress

これは非常に面倒です。なぜなら、Eclipse が毎回コンパイルされた後に手動で maven compile を呼び出さずにコーディングしたいだけだからです。

AJDT プラグインの Aspect Path または inPath を編集する必要がありますか? Eclipse がビルドに maven を使用しないのはなぜですか?


私は使っている:

  • エクリプス WTP インディゴ
  • 春 3.0.5.リリース
  • JDK7 & Tomcat 7
  • m2eclipse & AJDT プラグイン

これらは、私の pom.xml の関連するフラグメントです。

<!-- AspectJ -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>1.6.11</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.6.11</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.aspects</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>${spring.version}</version>
    <scope>compile</scope>
</dependency>

<!-- Compile time weaving -->
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>compile</id>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <verbose>true</verbose>
                <outxml>true</outxml>
                <aspectLibraries>
                    <aspectLibrary>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-aspects</artifactId>
                    </aspectLibrary>
                </aspectLibraries>
            </configuration>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
        <!-- omitted test-compile part -->
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.11</version>
        </dependency>
    </dependencies>
</plugin>
4

2 に答える 2

3

私が取り組んでいるプロジェクトで同じ問題を抱えています。要するに、使用しているツール セットでは、ロード時のウィービングを有効にするか、以前のバージョンの Eclipse を使用する必要があります。現在、m2e Eclipse プラグインと、最新バージョンの Eclipse とのspectj-maven-plugin 統合に問題があります。最悪の部分は、AspectJ を使用していないため、m2e 関係者はあまり気にしないことです。

問題へのリンクは次のとおりです。

于 2011-08-25T02:59:35.883 に答える
0

自動コンパイルに加えて、JDT ウィービング プラグインが有効になっていることを確認する必要があります。

ウィンドウ | ウィンドウ | 環境設定; JDT Weaving セクションをクリックして、現在有効になっていることを確認します。プラグインを最初にインストールしたとき、これを有効にするかどうか尋ねられましたが、「いいえ」と答えた場合は無効にすることができます。この画面で JDT Weaving が有効になっていることを確認してください

于 2011-08-25T02:23:12.030 に答える