仅在父级中运行maven插件

Wal*_*lle 13 maven-plugin pom.xml maven

我已经创建了一个maven插件来启动,清理和停止数据库.我的项目包含一个包含4个模块的pom文件:

<modules>
    <module>infrastructure</module>
    <module>domain</module>
    <module>application</module>
    <module>presentation</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

该插件仅在此pom中指定,而不是在模块的pom中指定.当我转到cmd以启动数据库时:

mvn hsqldb:startdb
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我的问题的解决方案?

亲切的问候,

WALLE

Sea*_*oyd 21

两种方式:

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

    -N,--non-recursive
    不要进入子项目

    (来源)或

  • 用你的插件注释 @aggregator

    标记此Mojo以多模块方式运行它,即使用列为模块的项目集合来构建构建.

    (来源)

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

无论哪种方式,它只会构建顶级项目而不是下降到模块中.我无法知道您可以在pom中配置它.