我正在开发一个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;
}
如何获得(解析和绝对)根模块的路径?
答案 0 :(得分:1)
感谢this answer从不同的角度处理同一问题(而不是来自Mojo),我找到了一个解决方案:
将以下字段添加到我的Mojo:
@Parameter(defaultValue = "${session}", readonly = true)
private MavenSession mavenSession;
然后以这种方式使用它:
mavenSession.getExecutionRootDirectory()