仅在父级中运行 Maven 插件

Posted

技术标签:

【中文标题】仅在父级中运行 Maven 插件【英文标题】:Running a maven plugin only in the parent 【发布时间】:2011-08-27 19:34:36 【问题描述】:

我创建了一个 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>

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

亲切的问候,

华尔

【问题讨论】:

【参考方案1】:

两种方式:

在命令行,执行mvn hsqldb:startdb -N

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

(Source) 或

@aggregator注释你的插件

标记此 Mojo 以在 multi 中运行它 模块方式,即聚合构建 项目集列为 模块。

(Source)

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

无论哪种方式,它都只会构建顶层项目,而不会下降到模块中。 我不知道你可以在 pom 中配置它。

【讨论】:

以上是关于仅在父级中运行 Maven 插件的主要内容,如果未能解决你的问题,请参考以下文章

在父级中反应handleClick

检测一个 UIView 是不是在父级中的另一个 UIView 后面

PHP在父级中访问子级的私有属性

嵌套 ControlValueAccessor 的角度验证状态未在父级中正确传播,如何实现此验证?

vuejs v-model 值没有在父级中更新?

jQuery:在父级中选择具有类名的内部和外部第一个元素