仅在父级中运行Maven插件 [英] Running a maven plugin only in the parent

查看:16
本文介绍了仅在父级中运行Maven插件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了一个maven插件来启动、清理和停止数据库。我的项目由一个包含4个模块的POM文件组成:

<modules>
    <module>infrastructure</module>
    <module>domain</module>
    <module>application</module>
    <module>presentation</module>
</modules>

插件仅在此POM中指定,而不在模块的POM中指定。当我转到cmd启动数据库时:

mvn hsqldb:startdb
Maven尝试为每个POM文件创建一个数据库。它实际上启动了5个数据库(一个用于父POM,一个用于每个模块)。然而,我只想要一个(来自父母的POM)。在我的父POM文件中,插件声明如下:

<plugin>
    <groupId>sample.plugin</groupId>
    <artifactId>hsqldb-maven-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <inherited>false</inherited>
    <dependencies>
        <dependency>
            ...
        </dependency>
    </dependencies>
    <executions>
        ...
    </executions>
    <configuration>
        ...
    </configuration>
</plugin>

我的问题有什么解决方案吗?

致以亲切的问候

Walle

推荐答案

两种方式:

  • 在命令行上执行mvn hsqldb:startdb -N

    -N--non-recursive
    不要递归到子项目

    (Source)或

  • 使用@aggregator

    注释您的插件
    将此Mojo标记为在多个 模块方式,即聚合构建 其中列出的项目集如下 模块。

    (Source)

    虽然没有明确说明,但这意味着您的插件负责生成子模块,即不会自动生成子模块。

无论哪种方式,它都将只构建顶级项目,而不是深入到模块中。 据我所知,您不可能在POM中配置此功能。

这篇关于仅在父级中运行Maven插件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆