<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<!-- 這里配置插件的行為 -->
</configuration>
</plugin>
compiler插件底層使用javac
進行編譯,因此插件的配置很多都跟javac
的命令選項存在對應關(guān)系.
可通過如下命令進行分析:
mvn clean compile -X|grep -E --color -A 500 -e "Configuring mojo"
插件屬性 | javac選項 | 描述 |
---|---|---|
- | -d |
生成class字節(jié)碼的路徑 |
- | -classpath |
查找類路徑 |
- | -sourcepath |
源文件所在路徑 |
- | -g |
生成所有調(diào)試信息 |
- | -nowarn |
不生成任何警告 |
- | -source |
源碼語法版本 |
- | -target |
字節(jié)碼版本 |
- | -encoding |
java源文件使用的字符編碼 |
- | -s |
生成的源文件放置的目錄 |
<annotationProcessors> | -processor |
配置編譯時使用的注解處理器全限定類名 |
<annotationProcessorPaths> | -processorpath |
配置編譯時使用的注解處理器所在的classpath |
關(guān)于注解處理器的機制:
如果compiler插件沒有配置注解處理器,
則javac
編譯時會使用ServiceLoader掃描所有classpath:/META-INF/services/javax.annotation.processing.Processor
文件,加載文件中的類作為要使用的注解處理器.
反之,如果顯示配置了注解處理器(通過<annotationProcessors>或者<annotationProcessorPaths>),
則javac
時會添加processor選項或processorpath選項,編譯時會使用指定的注解處理器,不再進行掃描.