【问题标题】:How to ignore modules in my aggregator POM while executing a plugin如何在执行插件时忽略聚合器 POM 中的模块
【发布时间】:2020-05-29 02:36:11
【问题描述】:

我需要在我的聚合器 POM 上执行一个自定义插件,该插件应该检查​​子模块。由于子模块文件夹和 POM 尚不存在,我总是收到如下错误:

The project ... has 1 error
[ERROR]     Child module ... of parentproject\pom.xml does not exist

执行插件时是否可以忽略模块?

我的 Mojo 宣言

@Mojo(name = "checkout", aggregator = true)
public class CheckoutMojo extends AbstractMojo {

【问题讨论】:

    标签: maven pom.xml parent-pom


    【解决方案1】:

    在您的@Mojo 中,您可以添加一个条目aggregator = true,以便插件仅在父 POM 上运行,而不是在模块上运行。

    【讨论】:

    • 我认为它应该是 aggregator = false。无论如何,我也尝试过 true 。同样的错误
    • 好的,我明白了。如果 POM 中提到的模块不存在,您可能无法运行 Maven 插件。那时该项目无效。
    • 请注意,让插件检查项目的一部分是非常不寻常的。你应该认真考虑是否真的有必要这样做。通常,你将你的父 POM 和你的模块放到同一个 git/svn 存储库中,并一次将其全部检出。
    • 是的,我同意。但我这里不是这样。此 POM 不是父 POM。已经有另一个父 POM。所有模块都有自己的存储库。这个 POM 应该是一个聚合器,应该能够检出模块。
    • 在这种情况下,我会检查所有模块之前我运行任何 Maven 目标。
    【解决方案2】:

    我能够通过在 POM 中引入配置文件并在配置文件中移动所有模块名称来解决此问题。由于 maven 在加速时没有找到任何模块,所以它按预期加速,然后我的 mojo 被执行。现在应该在不存在模块的情况下运行的 mojo 被称为:

    mvn groupId:artifactId:version:goalname
    

    应该使用模块运行的 mojo 被称为:

    mvn groupId:artifactId:version:goalname -Pprofile_having_modules
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-27
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多