web-dev-qa-db-ja.com

LombokとAspectJを連携させる方法は?

私は投稿を終了しました このSOの問題 Lombokがゲッター/セッターを生成しないことについて。 AspectJと競合していることがわかりました。 AspectJを無効にすると、getter/setterが適切に生成されます。

私の推測では、ajcコンパイラーはロンボクを認識できません。

ロンボクとAspectJは相互に排他的ですか?両方のテクノロジーは連携して機能しますか?

25
Eric B.

AspectJメンテナのAndy Clementによる現在の回答は、AspectJコンパイラインフラストラクチャに含まれ、名前が変更されたECJ(Eclipse Compiler for Java)パッケージが原因で問題があるということです。

詳細については、AspectJユーザーのメーリングリストでEric B.とA. Clementの間で進行中の議論があります。

多分私達はこの答えでここで問題を閉じ、問題が解決されたら報告することができます。

7
kriegaex

Project Lombokを依存関係としてアスペクトj-maven-pluginに追加します。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
    <scope>compile</scope>
</dependency>

例えば:

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.8</version>
        <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>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.18</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
        <configuration>
            <source>${Java.version}</source>
            <target>${Java.version}</target>
            <complianceLevel>${Java.version}</complianceLevel>
            <encoding>${project.build.sourceEncoding}</encoding>
            <verbose>true</verbose>
            <privateScope>true</privateScope>
            <showWeaveInfo>true</showWeaveInfo>
            <outxml>true</outxml>
        </configuration>
        <executions>
            <execution>
                <phase>compile</phase>
                <goals>
                    <goal>compile</goal>
                    <goal>test-compile</goal>
                </goals>
                <configuration>
                    <aspectLibraries combine.self="override">
                        <aspectLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-aspects</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                </configuration>
            </execution>
        </executions>
    </plugin>
0
Cheng.T