2012-10-10 6 views
10

컴파일하는 동안 코드를 분석하고 필요하면 오류를 처리하는 방법으로 JSR 269를 사용하고 있습니다. maven에서 주석 처리기의 출력을 표시하는 데 문제가 있습니다 (Ant가 출력을 표시합니다) 경고 및 오류를 표시하기 위해 javax.annotation.processing.Messager를 사용하지만 출력이 표시되지 않습니다. . (필자는 그것이 실행되어야한다는 것을 알고 있습니다, 왜냐하면 그것은 꼭 필요한 코드를 생성하기 때문입니다). 아이디어가 있으십니까?maven의 주석 프로세서 출력

+0

프로세서가 메시지를 어떻게 출력합니까? 어떻게 호출합니까? –

+0

'-X' 매개 변수로 maven을 호출하면 출력이 표시됩니까? –

+0

@matt b 경고를 표시하기 위해 javax.annotation.processing.Messager를 사용하고 있습니다 :'_messager = processingEnv.getMessager();'@Jorn : -X 매개 변수를 사용하지 않습니다. 프로세서가 서비스 공급자로 나열됩니다. – iGili

답변

12

나는 Maven 버그 나 더 나은 컴파일러 플러그인 버그 (MCOMPILER-66)를 사용하고 있다고 생각합니다. 주석 처리시 컴파일러 플러그인에는 몇 가지 문제가 있습니다 (예 : MCOMPILER-62). 정말로 가장 좋은 옵션은 컴파일러 플러그인에 대한 주석 처리를 비활성화하고 maven-processor-plugin을 사용하는 것입니다. 이 blog post에서는이를 사용하는 방법을 볼 수 있습니다.

<plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
      <compilerArgument>-proc:none</compilerArgument> 
     </configuration> 
    </plugin> 
    <plugin> 
     <groupId>org.bsc.maven</groupId> 
     <artifactId>maven-processor-plugin</artifactId> 
     <version>1.3.7</version> 
     <executions> 
      <execution> 
       <id>process</id> 
       <goals> 
        <goal>process</goal> 
       </goals> 
       <phase>process-sources</phase> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
       <groupId>org.hibernate</groupId> 
       <artifactId>hibernate-jpamodelgen</artifactId> 
       <version>1.1.0.Final</version> 
       <scope>compile</scope> 
      </dependency> 
     </dependencies> 
    </plugin> 

주석 처리기 종속성이 어떻게 플러그인에만 적용되는지 유의하십시오.