在子级而不是孙子级或父级中执行 maven 插件

问题描述

我有一个 maven Mojo 插件,我只想在子 pom 中执行,而不是在当前的 pom 或孙子 pom 中执行。我的插件在编译时运行并基本上读取文件,对于我的用例,如果它在子 pom 中运行,那么在孙子 pom 中运行是多余的。

例如,我有一个 maven Mojo 插件,它被父 pom 文件 ParentFile 调用。这个 pom 文件是在其他存储库中继承的,我没有写入权限在这些存储库中,有一个带有 pom 文件 ChildFile 的根模块,其父文件是 ParentFile。存储库中还有其他子模块包含父级为 ChildFile 的 pom 文件(GrandchildrenFiles)。

我想从 ChildFile 执行我的 Mojo 插件,而不是从 GrandchildrenFiles 或 ParentFile。有没有办法让我做到这一点,而无需对包含 ChildFile 和 GrandchildrenFiles 的存储库进行写访问?

解决方法

你可能无法阻止你的插件被执行,但你可以检查,作为你插件的第一步,如果你的父级是你期望的父级。为此,您可以使用 project.getParent()

如果没有,您只需跳过其余的执行。