2011-05-18 82 views
12

我创建了一个Maven插件来启动,清理和停止数据库。我的项目由4个模块的pom文件:仅在父项中运行maven插件

<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

回答

20

两种方式:

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

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

    Source)或

  • 注释与@aggregator

    标志这一魔咒在多 模块的方式,即总运行插件构建 与列出的一组项目作为 模块。

    Source

    虽然它没有明确说,这意味着你的插件放在建设主管的子模块,即子模块将不会被自动建立。

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