仅在父级中运行maven插件

时间:2011-05-18 07:03:34

标签: maven maven-plugin pom.xml

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

1 个答案:

答案 0 :(得分:21)

两种方式:

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

      

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

    Source)或

  • 使用@aggregator

    为您的插件添加注释
      

    标记此Mojo以多个方式运行它    模块方式,即聚合构建    列出的项目集    模块。

    Source

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

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