Maven Plugins

代碼示例

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <extensions>false</extensions>
        <inherited>true</inherited>
        <configuration>
          <classifier>test</classifier>
        </configuration>
        <dependencies>...</dependencies>
        <executions>...</executions>
      </plugin>
    </plugins>
  </build>
</project>

除了標(biāo)準(zhǔn)的<groupId><artifactId><version>這3個(gè)標(biāo)簽外,還有其他標(biāo)簽供用戶選擇。

extensions

true/false,默認(rèn)值為false。 是否可以加載此插件的擴(kuò)展項(xiàng)。

inherited

true/false 默認(rèn)值為true。其他繼承此POM的POM文件中的插件是否繼承該插件的屬性。

configuration

這個(gè)標(biāo)簽是特定于單個(gè)插件的??梢栽谶@里指定插件Mojo可能需要的任何屬性。值得注意的是,所有配置元素(無論它們位于POM中的什么位置)都旨在將值傳遞給另一個(gè)底層系統(tǒng),比如插件。換句話說,POM模式從來不顯式地需要配置configuration中的值,但是插件goal完全有權(quán)要求配置值。

如果POM文件中聲明了父類,它將從父類POM文件中的build/pluginspluginManagement部分繼承插件的配置。

例如:
父類插件配置內(nèi)容demo:

<plugin>
<groupId>my.group</groupId>
<artifactId>my-plugin</artifactId>
<configuration>
  <items>
    <item>parent-1</item>
    <item>parent-2</item>
  </items>
  <properties>
    <parentKey>parent</parentKey>
  </properties>
</configuration>
</plugin>

子類插件配置內(nèi)容demo1:

<plugin>
<groupId>my.group</groupId>
<artifactId>my-plugin</artifactId>
<configuration>
  <items>
    <item>child-1</item>
  </items>
  <properties>
    <childKey>child</childKey>
  </properties>
</configuration>

子類插件配置會(huì)繼承父類插件配置,繼承規(guī)則如下:

  1. 如果父類和子類有同一屬性配置,以子類為準(zhǔn);
  2. 如果父類有,子類沒有。父類配置會(huì)被繼承;

根據(jù)以上繼承規(guī)則,子類繼承父類插件配置后,屬性如下:

<plugin>
<groupId>my.group</groupId>
<artifactId>my-plugin</artifactId>
<configuration>
  <!--相同屬性配置,以子類為準(zhǔn)-->
  <items>
    <item>child-1</item>
  </items>
  <properties>
    <childKey>child</childKey>
    <!--子類沒有的屬性,繼承該屬性-->
    <parentKey>parent</parentKey>
  </properties>
</configuration>

如果不想接受默認(rèn)的繼承規(guī)則,也可以通過配置屬性combine.childrencombine.self來自定義繼承規(guī)則。

  1. combine.children="append" 相同屬性,子類插件配置和父類插件配置合并;
  2. combine.self="override" 相同屬性,子類配置直接覆蓋父類配置;
  3. 以上2個(gè)屬性同時(shí)使用,以combine.self="override"為準(zhǔn);

子類插件配置內(nèi)容demo2:

<configuration>
  <items combine.children="append">
    <!-- combine.children="merge" is the default -->
    <item>child-1</item>
  </items>
  <properties combine.self="override">
    <!-- combine.self="merge" is the default -->
    <childKey>child</childKey>
  </properties>
</configuration>

根據(jù)自定義的繼承規(guī)則,繼承生效的屬性配置為:

<configuration>
  <items combine.children="append">
    <item>parent-1</item>
    <item>parent-2</item>
    <item>child-1</item>
  </items>
  <properties combine.self="override">
    <childKey>child</childKey>
  </properties>
</configuration>

dependencies

依賴關(guān)系在POM中很常見,并且是所有plugins元素塊下的一個(gè)元素。依賴項(xiàng)具有與基礎(chǔ)構(gòu)建下相同的結(jié)構(gòu)和功能。

這種情況下的主要區(qū)別是,它們不再作為項(xiàng)目的依賴項(xiàng)應(yīng)用,而是作為它們所處插件的依賴項(xiàng)應(yīng)用。這樣做的好處是可以更改插件的依賴項(xiàng)列表,可以通過排除刪除未使用的運(yùn)行時(shí)依賴項(xiàng),或者更改所需的dpendent版本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容