[
https://issues.apache.org/jira/browse/MNG-7038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17706401#comment-17706401
]
ASF GitHub Bot commented on MNG-7038:
-------------------------------------
michael-o commented on code in PR #1061:
URL: https://github.com/apache/maven/pull/1061#discussion_r1152000103
##########
maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java:
##########
@@ -494,14 +504,50 @@ public interface MavenExecutionRequest {
/**
* @since 3.3.0
+ * @deprecated use {@link #setRootdir(Path)} instead
*/
+ @Deprecated
void setMultiModuleProjectDirectory(File file);
/**
* @since 3.3.0
+ * @deprecated use {@link #getRootdir()} instead
*/
+ @Deprecated
File getMultiModuleProjectDirectory();
+ /**
+ * Sets the root dir of the project.
+ *
+ * @since 4.0.0
+ */
+ MavenExecutionRequest setRootdir(Path rootdir);
+
+ /**
+ * Gets the root directory of the project, which is the parent directory
containing the {@code .mvn} directory.
+ * If there's no such file, an {@code IllegalArgumentException} will be
thrown.
+ *
+ * @throws IllegalArgumentException if the root directory could not be
found
Review Comment:
Isn't this `IllegalStateException`?
##########
maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java:
##########
@@ -133,6 +134,21 @@ public Object getValue(String expression) {
valueSources.add(new
BuildTimestampValueSource(config.getBuildStartTime(), modelProperties));
}
+ valueSources.add(new AbstractValueSource(false) {
+ @Override
+ public Object getValue(String expression) {
+ if ("rootdir".equals(expression)) {
+ Path path = config.getRootdir();
+ if (path != null) {
+ return path.toString();
+ }
+ throw new IllegalArgumentException("Unable to find the
root directory. "
Review Comment:
ISE rather? The expression isn't invalid but the state within, no?
##########
maven-model-builder/src/main/java/org/apache/maven/model/path/ProfileActivationFilePathInterpolator.java:
##########
@@ -79,6 +80,25 @@ public Object getValue(String expression) {
return null;
}
+ interpolator.addValueSource(new AbstractValueSource(false) {
+ @Override
+ public Object getValue(String expression) {
+ /*
+ * We intentionally only support ${rootdir} and not
${session.rootdir} as the latter form
+ * would suggest that other session.* expressions can be used
which is beyond the design.
+ */
+ if ("rootdir".equals(expression)) {
+ Path path = context.getRootdir();
+ if (path != null) {
+ return path.toString();
+ }
+ throw new IllegalArgumentException("Unable to find the
root directory. "
Review Comment:
Same here
##########
maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java:
##########
@@ -321,6 +323,46 @@ void initialize(CliRequest cliRequest) throws
ExitException {
}
}
+ Path topdir = Paths.get(cliRequest.workingDirectory);
+ boolean isAltFile = false;
+ for (String arg : cliRequest.args) {
+ if (isAltFile) {
+ Path path = Paths.get(arg);
+ if (Files.isDirectory(path)) {
Review Comment:
Granted.
> 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)