15

Lombok アノテーションをテストしてプロジェクトに導入し、コードを少し改善するために、いくつかの (非常に単純な) コードをまとめました。残念ながら、Maven を使用した場合と IntelliJ を介してテストを実行した場合の両方で、テストで問題が発生したようです。

ドメインクラスは次のようになります。

package foo.bar;

import lombok.Data;

@Data
public class Noddy {

    private int id;
    private String name;

}

対応するテストで:

package foo.bar;

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class NoddyTest {

    @Test
    public void testLombokAnnotations(){
        Noddy noddy = new Noddy();
        noddy.setId(1);
        noddy.setName("some name");
        assertEquals(noddy.getName(), "some name");
    }
}

Maven (および IntelliJ の関連プラグイン) には、aspectjrt 依存関係と、aspectj-maven-plugin があります。

Maven 2 スタイルの POM、JSDK 1.6.0_31、Lombok 0.11.0 で実行しています。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>0.11.0</version>
</dependency>

私たちは愚かなことをしているのでしょうか、それとも明らかな何かを見逃していますか?

しばらくの間、本番環境で Lombok を使用することに目を向けていたので、これを機能させることができれば素晴らしいことです。

どうもありがとう、

P.

(FWIW、IntelliJ 11.1.2 には Lombok プラグイン 0.4 があり、このプロジェクトでは ACJ を使用しているようです)

4

2 に答える 2

1

問題は、lombok で生成されたコードが ajc によって上書きされることであると思われます。Fabrizio Giudici によって見つけられたブログ エントリによると、Maven AspectJ プラグインのバグにより、Maven を渡すことができないため、「クリーンな」Maven ソリューションはありません。 ajc に必要な引数。

彼はここで回避策を提案しています:

実際、これは私にとってはうまくいきました。間違いなく、よりクリーンなソリューションです。weave ディレクトリを追加して、テスト クラスの実行フェーズを追加する必要がある場合があります。

于 2012-05-28T08:54:10.533 に答える
0

残念ながら、mhvelplundが言及した 2 番目の解決策をテストしましたが、うまくいきませんでした。解決策は、pom.xml から AspectJ maven プラグインを完全に削除することでした。

于 2012-09-19T16:36:27.837 に答える