up:: Maven 插件 tag::插件配置

插件目标像 Java 中的函数一样,执行相应的功能,并且还有参数,这些参数的具体值,我们可以配置,传递给插件目标。

命令行插件配置

命令行插件配置算是比较经典的配置手段了,在 Java 中可以使用 -D 参数配置系统属性。Maven 简单的重用了该参数,在检查插件的时候检查系统属性,实现了插件参数的配置。

例如:maven-compiler-plugin 插件就提供了一个 maven.test.skip的系统属性,通过配置是否跳过测试。以下是该插件 testCompile目标的 skip 参数详细信息。

 skip
      User property: maven.test.skip
      Set this to 'true' to bypass compilation of test sources. Its use is NOT
      RECOMMENDED, but quite convenient on occasion.
 

可以看到该参数可以使用 maven.test.skip,因此可以编写命令 maven install -Dmaven.test.skip=true 用来跳过测试。

POM 插件配置

对于一些固定常用的参数,可以直接在 pom 文件中配置,使用 configuration 配置 参数,如下:

    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <warSourceExcludes>WEB-INF/classes</warSourceExcludes>
                </configuration>
   </plugin>

如果需要插件在不同声明周期执行相同的目标,但是执行的参数不一样,就需要另外配置。

 <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
               	 <executions>
                    <execution>
                        <id>diy-compile</id>
                        <phase>install</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>

                			  </configuration>
                    </execution>
                   
                      <execution>
                        <id>diy-test</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>

                			  </configuration>
                    </execution>
                </executions>
            </plugin>
</plugins>

如上同一插件的同一目标绑定了不同的声明周期阶段,具体的参数配置只需要在各自的 configuration 配置即可。