全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-23 10 分钟 ✍️ juanwangdev

插件配置高级用法

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" 追加配置

📝 发现内容有误?点击此处直接编辑

← 上一篇 插件目标绑定机制
下一篇 → 增量编译与缓存策略
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库