问题 maven中的注释处理器输出


我正在使用JSR 269作为在编译期间分析代码的方法,并在需要时将其失败。 我在maven中显示我的注释处理器的输出时遇到了麻烦(Ant确实显示了输出) 我正在使用javax.annotation.processing.Messager来显示警告和错误,但在maven中我没有看到它的输出。 (我确实知道它运行,因为它生成的代码应该如此)。 有任何想法吗?


12875
2017-10-10 14:40


起源

处理器如何输出消息?你怎么调用它? - matt b
如果你用mack调用maven,输出会显示吗? -X 参数? - Jörn Horstmann
@matt b我正在使用javax.annotation.processing.Messager来显示警告: _messager=processingEnv.getMessager(); @Jorn:我不使用-X参数,处理器被列为服务提供者 - iGili
我问的更多关于处理器如何输出消息 - 记录器,标准输出等等? - matt b
消息传递器API提供了一种将消息输出到stdout的方法。它应该显示编译警告,就像编译器一样。 - iGili


答案:


我认为你遇到了Maven错误或更好的编译器插件中的错误 - MCOMPILER-66。在注释处理方面,编译器插件有几个问题,例如 MCOMPILER-62。真正最好的选择imo是禁用编译器插件的注释处理并使用 行家处理器的插件。在这 博客文章 你可以看到如何使用它。它看起来像这样:

   <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>

另请注意,注释处理器依赖关系如何仅适用于插件。


14
2017-10-11 11:53





您可以通过在maven-compiler-plugin配置中启用showWarnings标志来完成此操作:

<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


0
2017-08-10 07:57