执行插件时如何忽略聚合器 POM 中的模块

How to ignore modules in my aggregator POM while executing a plugin

我需要在我的聚合器 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 {

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

我能够通过在 POM 中引入一个配置文件并在配置文件中移动所有模块名称来解决这个问题。由于 Maven 在启动时没有找到任何模块,因此它会按预期启动,然后执行我的 mojo。现在应该 运行 没有模块存在的 mojo 被称为:

mvn groupId:artifactId:version:goalname

而应该 运行 带有模块的 mojo 被称为:

mvn groupId:artifactId:version:goalname -Pprofile_having_modules