[ https://issues.apache.org/jira/browse/MNG-7038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17622685#comment-17622685 ]
ASF GitHub Bot commented on MNG-7038: ------------------------------------- gnodet commented on PR #840: URL: https://github.com/apache/maven/pull/840#issuecomment-1287888704 > I think I ran into a chicken-egg type of problem. > > * I would like to have the project.topdir available as a variable that can be used in the pom.xml to pin point things. This implies it must be available before that point. > * Also I would like to base loading a project specific settings.xml opon this variable ([MNG-5659](https://issues.apache.org/jira/browse/MNG-5659)) > * Yet the only viable way to determine it is after the pom.xml has been parsed and at least the parents are available. > > I would like to have some suggestions on how to handle this is. This would have to be computed inside the `DefaultModelBuilder`. The models are built in two phases. After the first phase is done, all models have been read and the needed information should be available. So the best place may be (without much thoughts) in the `DefaultModelBuilder`, just before the model interpolation. The parents (and all models from the reactor) should be available on the model building request. The relevant code is [here](https://github.com/apache/maven/blob/24329561fc9092ba7a10aa9c7a378b392e0d9301/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java#L883-L886). > Introduce public property to point to a root directory of (multi-module) > project > -------------------------------------------------------------------------------- > > Key: MNG-7038 > URL: https://issues.apache.org/jira/browse/MNG-7038 > Project: Maven > Issue Type: Improvement > Reporter: Envious Guest > Priority: Major > Fix For: Issues to be reviewed for 4.x > > > This is a request to expose a property *maven.multiModuleProjectDirectory* > which is currently internal (or introduce a brand new one with analogous > functionality). > * For a single-module project, its value should be same as *project.basedir* > * For multi-module project, its value should point to a project.basedir of a > root module > Example: > multi-module // located at /home/me/sources > +- module-a > +- module B > Sample multi-module/pom.xml: > {{<project>}} > {{ <parent>}} > {{ <groupId>com.acme</groupId>}} > {{ <artifactId>corp-parent</artifactId>}} > {{ <version>1.0.0-RELEASE</version>}} > {{ </parent>}} > {{ <groupId>com.acme</groupId>}} > {{ <artifactId>multi-module</artifactId>}} > {{ <version>0.5.2-SNAPSHOT</version>}} > {{ <modules>}} > {{ <module>module-a</module>}} > {{ <module>module-b</module>}} > {{ </modules>}} > {{</project>}} > The property requested should return /home/me/sources/multi-module, > regardless of whether it's referenced in any of the child modules (module-a, > module-b) or in multi-module. > Note that multi-module itself has parent (e.g. installed in a local > repository), so the new property should be smart enough to detect it and > still point to /home/me/sources/multi-module instead of the local repository > where the corp-parent is installed. > The use-case for such a property could be to have a directory for combined > report of static analysis tools. Typical example - jacoco combined coverage > reports. -- This message was sent by Atlassian Jira (v8.20.10#820010)