Я использую JSR 269 как способ анализа кода во время компиляции и, при необходимости, отказа от него. У меня проблемы с отображением вывода моего процессора аннотаций в maven (Ant действительно показывает вывод). Я использую javax.annotation.processing.Messager для отображения предупреждений и ошибок, но в maven я не вижу его вывода. (Я знаю, что он работает, потому что он генерирует код, как и должен). Любые идеи?
Вывод процессора аннотаций в maven
Ответы (2)
Я думаю, вы столкнулись с ошибкой Maven или, лучше, с ошибкой в плагине компилятора - MCOMPILER- 66а>. Когда дело доходит до обработки аннотаций, плагин компилятора имеет несколько проблем, например, также MCOMPILER-62 а>. На самом деле лучший вариант — отключить обработку аннотаций для плагина компилятора и использовать maven-процессор-плагин. В этом сообщении в блоге вы можете увидеть, как его использовать. Это выглядит так:
<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>
Обратите также внимание на то, что зависимость обработчика аннотаций хорошо привязана только к плагину.
person
Hardy
schedule
11.10.2012
Вы можете сделать это, включив флаг showWarnings в конфигурации maven-compiler-plugin:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</build>
См. также https://github.com/Cosium/annotation-processor-logger#enable-all-logging-levels
person
Réda Housni Alaoui
schedule
10.08.2018
Обратите внимание, что это включает не только
WARNING
и MANDATORY_WARNING
, но также NOTE
и OTHER
, которые будут отображаться Maven как INFO
.
- person rü-; 14.12.2018
Это работает. Вам также может понадобиться
<verbose>true</verbose>
, особенно если вы используете <fork>true</fork>
.
- person mernst; 14.03.2020
-X
? - person Jörn Horstmann   schedule 10.10.2012_messager=processingEnv.getMessager();
@Jorn: я не использую параметр -X, процессор указан как поставщик услуг - person iGili   schedule 10.10.2012