从Mojo获取多模块maven项目的根目录

Obtain root directory of multi-module maven project from a Mojo

我正在开发maven插件,需要获取多模块工程的根目录

mavenProject.getBuild().getDirectory()我可以得到当前模块目录的路径,好的。

所以我想我会尝试获取 root MavenProject,但是 getRootProject() 定义如下,getRootProject().getBuild().getDirectory() returns "${project.basedir}"(字面意思是字符串值...我不知道如何解决,即使我解决了它也会解决当前模块,这不是我想要的)。

@Parameter(defaultValue = "${project}", readonly = true)
private MavenProject mavenProject;
// ...
private MavenProject getRootProject() {
    MavenProject project = mavenProject;
    while (project.getParent() != null) {
        project = project.getParent();
    }
    return project;
}

如何获取根模块的(解析和绝对)路径?

感谢 this answer 从不同的角度(不是从 Mojo)处理同一问题,我找到了解决方案:

将以下字段添加到我的 Mojo 中:

@Parameter(defaultValue = "${session}", readonly = true)
private MavenSession mavenSession;

然后这样使用:

mavenSession.getExecutionRootDirectory()