2012-05-17 3 views
10

우리는 코드를 좀 더 좋게 만들기 위해 Lombok 주석을 테스트하고 소개하기 위해 (아주 간단한) 코드를 조합했습니다. 불행히도, Maven과 IntelliJ를 통해 테스트가 실행될 때 테스트가 중단되는 것 같습니다. 해당 테스트로유닛 테스트에서 Lombok을 사용할 수 없습니다.

package foo.bar; 

import lombok.Data; 

@Data 
public class Noddy { 

    private int id; 
    private String name; 

} 

:

우리의 도메인 클래스

은 같은 모양 우리는 메이븐의 aspectjrt 의존성 (뿐만 아니라 인 IntelliJ의 관련 플러그인)가

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"); 
    } 
} 

하고, aspectj-maven-plugin.

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

우리가 바보 같은 일을하거나 뭔가를 분명 누락 :

우리는 JSDK 1.6.0_31, 롬복 0.11.0, 메이븐 2 형 리딩으로 ​​실행중인?

내가 지금까지 생산을 위해 롬복을 사용하는 것에 눈을 돌 렸기 때문에 이것이 가능하면 좋을 것 같습니다.

많은 감사,

P.

(FWIW는, IntelliJ에 11.1.2은 롬복 플러그인 0.4을 가지고 있으며,이 프로젝트 ACJ 사용하는 것으로 보인다) 문제가 될 것으로 보인다

+0

혹시이 문제에 대한 해결책을 찾았습니까? – anazimok

답변

1

을 lambok이 생성 한 코드는 ajc에 의해 덮어 쓰여지고 Fabrizio Giudici가 찾은 블로그 항목에 따르면, Maven AspectJ 플러그인의 버그로 인해 "깨끗한"Maven 솔루션이 없기 때문에 필요한 인수를 ajc에 전달할 수 없습니다.

http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist는 사실, this이 나를 위해 일한, 그것은 틀림없이 깨끗한 해결책 :

그는 여기에 해결 방법을 제안한다. 추가 위빙 디렉토리를 사용하여 테스트 클래스에 대한 실행 단계를 추가해야 할 수도 있습니다.

0

불행히도 두 번째 솔루션 인 mentioned by mhvelplund을 테스트했지만 나에게 도움이되지 못했습니다. 해결책은 pom.xml에서 AspectJ maven 플러그인을 완전히 제거하는 것이었다.

+0

대답 안에 짧은 URL 링크를 포함시키지 마십시오. – j0k

+0

OK는 그것을 알지 못했고 mhvelplund 자신이 제공 한 링크를 복사/붙여 넣기했습니다. – maxxyme

+0

네가 맞아. – j0k

관련 문제