插件配置高级用法
Maven 插件配置支持多种高级用法,灵活控制插件行为。
configuration 配置
基本配置
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
配置类型
| 类型 | 说明 |
|---|---|
| 简单值 | 字符串、数字、布尔 |
| 列表值 | 数组、集合 |
| 对象值 | 复杂配置对象 |
列表配置
数组配置
XML
<configuration>
<compilerArgs>
<arg>-Xlint:unchecked</arg>
<arg>-Xlint:deprecation</arg>
</compilerArgs>
</configuration>
集合配置
XML
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/*Tests.java</include>
</includes>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
对象配置
嵌套配置
XML
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
execution 配置
多执行配置
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>clean-log</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete dir="logs"/>
</tasks>
</configuration>
</execution>
<execution>
<id>copy-config</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy file="config.xml" todir="target"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
execution 元素
| 元素 | 说明 |
|---|---|
| id | 执行标识 |
| phase | 绑定阶段 |
| goals | 执行目标列表 |
| configuration | 执行级配置 |
inherited 配置
继承控制
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<inherited>false</inherited> <!-- 不继承到子模块 -->
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
extensions 配置
加载扩展
XML
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<extensions>true</extensions> <!-- 加载扩展 -->
</plugin>
配置继承
父子配置合并
XML
<!-- 父 POM -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source> <!-- 父配置 -->
</configuration>
</plugin>
<!-- 子模块 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding> <!-- 子配置 -->
<!-- source=17 继承 -->
</configuration>
</plugin>
combine.children
XML
<configuration combine.children="append">
<!-- 子配置追加而非覆盖 -->
</configuration>
命令行覆盖
-D 参数覆盖
Bash
mvn compile -Dmaven.compiler.source=11
覆盖 configuration 中的配置。
属性引用配置
使用属性
XML
<properties>
<java.version>17</java.version>
</properties>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
调用特定 execution
Bash
mvn plugin:goal@execution-id
mvn antrun:run@copy-config
常见插件高级配置示例
compiler 插件
XML
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgs>
<arg>-parameters</arg>
<arg>-Xlint:all</arg>
</compilerArgs>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
surefire 插件
XML
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<parallel>classes</parallel>
<threadCount>4</threadCount>
<includes>
<include>**/*Test.java</include>
</includes>
<systemProperties>
<property>
<name>env</name>
<value>test</value>
</property>
</systemProperties>
</configuration>
</plugin>
jar 插件
XML
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Built-By>Maven</Built-By>
<Build-Time>${maven.build.timestamp}</Build-Time>
</manifestEntries>
</archive>
</configuration>
</plugin>
要点总结
- configuration 配置插件参数
- executions 定义多个执行配置
- execution 绑定 phase 和 goals
- inherited=false 阻止继承
- 子模块配置与父配置合并
- -D 参数覆盖 configuration
- combine.children="append" 追加配置
📝 发现内容有误?点击此处直接编辑