컴파일하는 동안 코드를 분석하고 필요하면 오류를 처리하는 방법으로 JSR 269를 사용하고 있습니다. maven에서 주석 처리기의 출력을 표시하는 데 문제가 있습니다 (Ant가 출력을 표시합니다) 경고 및 오류를 표시하기 위해 javax.annotation.processing.Messager를 사용하지만 출력이 표시되지 않습니다. . (필자는 그것이 실행되어야한다는 것을 알고 있습니다, 왜냐하면 그것은 꼭 필요한 코드를 생성하기 때문입니다). 아이디어가 있으십니까?maven의 주석 프로세서 출력
10
A
답변
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>
주석 처리기 종속성이 어떻게 플러그인에만 적용되는지 유의하십시오.
프로세서가 메시지를 어떻게 출력합니까? 어떻게 호출합니까? –
'-X' 매개 변수로 maven을 호출하면 출력이 표시됩니까? –
@matt b 경고를 표시하기 위해 javax.annotation.processing.Messager를 사용하고 있습니다 :'_messager = processingEnv.getMessager();'@Jorn : -X 매개 변수를 사용하지 않습니다. 프로세서가 서비스 공급자로 나열됩니다. – iGili