在父POM中定义一个Maven插件配置,并在子POM中按条件激活它。

3

我正在构建一个父POM,用于定义各种插件要使用的公共版本。

<properties>
    <maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version>
</properties>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

但是我还想更进一步,定义一些可能被继承自此pom的项目使用的配置文件。 例如,我想预定义使用MapStructs的配置。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <showWarnings>true</showWarnings>
        <annotationProcessorPaths>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${mapstruct-jdk8.version}</version>
            </path>
        </annotationProcessorPaths>
        <compilerArgs>
            <compilerArg>
                -Amapstruct.defaultComponentModel=spring
            </compilerArg>
            <compilerArg>
                -Amapstruct.unmappedTargetPolicy=ERROR
            </compilerArg>
        </compilerArgs>
    </configuration>
</plugin>

我该如何在父pom中编写代码,以便子pom可以选择使用特定的配置或不使用,具体取决于它们是否需要使用mapstruct?


你可以在Maven中定义“profiles”。通过一个“activation”元素引用一个属性(例如,父项目默认为“false”),并让子项目设置不同的激活键值。 - Gaël J
1个回答

0

在子POM中,使用<skip>配置可能会有用:

 <configuration>
      <skip>true</skip>
 </configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接