Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

Maven pluginManagementの用途と使用例について

pom.xmlpluginManagement について、用途と使用例を書いていきます。

用途

親のプロジェクトでプラグインを定義して、子のプロジェクトに継承させるために使います。

※ 親のプロジェクトでも、定義したプラグインを使用できそうです。

使用例

親の pom.xml で、次のように書いていきます。

<project>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.8</version>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    ...
  </build>
  ...
</project>

子のプロジェクトは、上のプラグインを定義せずに利用できます。ただし、下のように定義が必要になる場合もあります。

子の pom.xml に定義が必要な場合

親のプラグインexecutions がある場合は、子の pom.xml にも定義が必要になるみたいです。

親の pom.xml

例えば、以下のようなケースになります。

<project>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.3.0</version>
          <executions>
            <execution>
              <id>pre-process-classes</id>
              <phase>compile</phase>
              <goals>
                <goal>jar</goal>
              </goals>
              <configuration>
                <classifier>pre-process</classifier>
              </configuration>
            </execution>
          </executions>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    ...
  </build>
  ...
</project>

子の pom.xml

親のプラグインについて、groupIdartifactId を定義する必要があります。

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

参考文献