<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<!-- 这里配置插件的行为 -->
</configuration>
</plugin>
compiler插件底层使用javac
进行编译,因此插件的配置很多都跟javac
的命令选项存在对应关系.
可通过如下命令进行分析:
mvn clean compile -X|grep -E --color -A 500 -e "Configuring mojo"
插件属性 | javac选项 | 描述 |
---|---|---|
- | -d |
生成class字节码的路径 |
- | -classpath |
查找类路径 |
- | -sourcepath |
源文件所在路径 |
- | -g |
生成所有调试信息 |
- | -nowarn |
不生成任何警告 |
- | -source |
源码语法版本 |
- | -target |
字节码版本 |
- | -encoding |
java源文件使用的字符编码 |
- | -s |
生成的源文件放置的目录 |
<annotationProcessors> | -processor |
配置编译时使用的注解处理器全限定类名 |
<annotationProcessorPaths> | -processorpath |
配置编译时使用的注解处理器所在的classpath |
关于注解处理器的机制:
如果compiler插件没有配置注解处理器,
则javac
编译时会使用ServiceLoader扫描所有classpath:/META-INF/services/javax.annotation.processing.Processor
文件,加载文件中的类作为要使用的注解处理器.
反之,如果显示配置了注解处理器(通过<annotationProcessors>或者<annotationProcessorPaths>),
则javac
时会添加processor选项或processorpath选项,编译时会使用指定的注解处理器,不再进行扫描.