是否可以将Maven插件配置从父项目汇总到子项目

时间:2018-09-06 15:38:34

标签: java maven maven-compiler-plugin

我有3个Maven项目,即父项目,中间项目和子项目:

Parent-->Middle-->Child

然后我有2个注释处理器依赖项。

父项目将maven-compiler-plugin定义为托管插件,并在commentProcessorPath上配置注释处理器1。中间项目也是如此,并在annotationProcessorPath上配置注释处理器2。

Parent-->Middle-->Child
   |        |        
  AP1      AP2      

然后,子项目的编译失败,因为其缺少注释处理器1,因为其配置来自中间项目。简单的答案是,只需将Processor1添加到中间插件配置中即可。

但是,我真正想要的是让孩子从父级和中间级继承托管配置并将它们聚合。也许是到深夜,但是我的直觉告诉我,maven可以解决这个问题,但是我很想念它。

这是来自父pom:

<groupId>myproject</groupId>
<artifactId>base</artifactId>
<version>1.2-SNAPSHOT</version>
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>myproject/groupId>
                            <artifactId>annotation1</artifactId>
                            <version>1.0</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

从中间pom:

<parent>
    <groupId>myproject</groupId>
    <artifactId>base</artifactId>
    <version>1.2-SNAPSHOT</version>
 </parent>
 <artifactId>middle</artifactId>
 <version>1.1-SNAPSHOT</version>
 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>myproject/groupId>
                            <artifactId>annotation2</artifactId>
                            <version>1.0</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

有人可以向我展示用于不同层次结构(父级,中间级)的技术,以向插件添加配置,以便子级具有两者的聚合配置

1 个答案:

答案 0 :(得分:1)

如下:

根项目-包含带有插件X及其默认配置的pluginManagement部分

子项目-包含插件X部分;本节中添加的任何配置都将附加到根的默认配置中(或覆盖-如果重新定义了相同的参数)。

在您的情况下,应包含带有注释1的pluginManagement; 中间应包含带有注解2的插件(此插件将添加到默认的annotaion1中); 将从具有两个注释的插件配置的中间继承。