【问题标题】:Running a maven plugin only in the parent仅在父级中运行 Maven 插件
【发布时间】: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>

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

亲切的问候,

华尔

【问题讨论】:

    标签: maven maven-plugin pom.xml


    【解决方案1】:

    两种方式:

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

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

      (Source) 或

    • @aggregator注释你的插件

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

      (Source)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2023-01-24
      • 2011-06-16
      相关资源
      最近更新 更多