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

时间:2017-06-21 15:33:56

标签: java maven maven-plugin

我正在开发一个maven插件,我需要获取多模块项目的根目录。

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

我想我会尝试获取root MavenProject,但如果getRootProject()定义如下,则getRootProject().getBuild().getDirectory()会返回"${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;
}

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

1 个答案:

答案 0 :(得分:1)

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

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

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

然后以这种方式使用它:

mavenSession.getExecutionRootDirectory()