2011-08-07 4 views
3

컴파일 프로세스 중에 주석 프로세서에서 새 클래스를 생성하는 maven 프로젝트가 있습니다. 클래스가 /target/generated-sources/annotations/에 성공적으로 생성되었지만 .jar에 컴파일되지 않았습니다. 왜?생성 된 코드가 메이븐 컴파일 프로세스에서 고려되지 않았습니다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>${project.build.source}</source> 
     <target>${project.build.target}</target> 
     <encoding>${project.build.sourceEncoding}</encoding> 
     <compilerArgument>-Xlint</compilerArgument> 
     <annotationProcessors> 
       <annotationProcessor>net.preprocessing.MyAnnotationProcessor</annotationProcessor> 
     </annotationProcessors> 
    </configuration> 
</plugin> 

편집

이 알려진 bug 것 같다. 누구나 조작 가능한 해결 방법이 있다면 환영합니다.

EDIT 2

어제 몇 가지 테스트를 수행 한,하지만 티켓에서 제안 된 해결 방법은 작동하지 않습니다. 테스트 케이스를 제공했습니다. 누구든지이 문제를 해결하는 방법에 대한 통찰력을 가지고 있다면 환영합니다. 나는 주석 처리 과정에서 초보자라는 것을 명심하십시오. 그래서 내가 놓치고있는 명백한 것이있을 수 있습니다.

답변

5

maven 컴파일러에 전달하는 'annotationProcessor'인수 대신 maven-processor-plugin을 사용하는 것이 좋습니다.

필자가 읽은 바로는 compilerArgumens에 몇 가지 문제가있는 것으로 보이며, 이는 maven-processor-plugin을 사용할 때 해결됩니다. 여기

당신은 받는다는 - 프로세서 플러그인에 대한 자세한 정보를 찾을 수 있습니다 여기에 http://maven-annotation-plugin.googlecode.com/svn/docs/usage.html

프로세서 플러그인 compilerArguments을 대체하는 방법의 예입니다 (예는 최대 절전 모드 메타 모델 생성기 사용하지만,이에 대해 동일한 대해 볼 것이다 모든 종류의 주석 프로세서 ...) : http://relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor

+0

이것은 (+1)가는 길입니다. –

+0

Hibernate 예제/해결 방법이 그것을했습니다. 방금 생성 된 소스로 디렉토리를 업데이트해야했습니다.많은 많은 감사합니다 !!! – JVerstry

+0

@JVerstry : 천만에요. – fgysin

1

당신이 할 일은 수업을 컴파일하고 항아리를 만드는 것이 아니라는 것입니다. Maven Jar Plugin 이것은 usage example입니다.

+0

jar는 프로세스의 일부로 빌드되지만 생성 된 코드는 포함되어 있지 않습니다. – JVerstry

+0

아 다음이 스레드를 체크 아웃 http://stackoverflow.com/questions/4741220/maven-producing-empty-jar – Ali

+0

내 jar에는 내 프로젝트 코드가 있지만 생성 된 코드는 들어 있지 않습니다. – JVerstry