[ 
https://issues.apache.org/jira/browse/MNG-7774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17719191#comment-17719191
 ] 

ASF GitHub Bot commented on MNG-7774:
-------------------------------------

cstamas commented on code in PR #1098:
URL: https://github.com/apache/maven/pull/1098#discussion_r1184662324


##########
maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java:
##########
@@ -309,6 +320,47 @@ void initialize(CliRequest cliRequest) throws 
ExitException {
             }
         }
 
+        // We need to locate the top level project which may be pointed at 
using
+        // the -f/--file option.  However, the command line isn't parsed yet, 
so
+        // we need to iterate through the args to find it and act upon it.
+        Path topDirectory = Paths.get(cliRequest.workingDirectory);
+        boolean isAltFile = false;
+        for (String arg : cliRequest.args) {
+            if (isAltFile) {
+                // this is the argument following -f/--file
+                Path path = topDirectory.resolve(arg);
+                if (Files.isDirectory(path)) {
+                    topDirectory = path;
+                } else if (Files.isRegularFile(path)) {
+                    topDirectory = path.getParent();
+                    if (!Files.isDirectory(topDirectory)) {
+                        System.err.println("Directory " + topDirectory
+                                + " extracted from the -f/--file command-line 
argument " + arg + " does not exist");
+                        throw new ExitException(1);
+                    }
+                } else {
+                    System.err.println(
+                            "POM file " + arg + " specified with the -f/--file 
command line argument does not exist");
+                    throw new ExitException(1);
+                }
+                break;
+            } else {
+                // Check if this is the -f/--file option
+                isAltFile = 
arg.equals(String.valueOf(CLIManager.ALTERNATE_POM_FILE)) || arg.equals("file");
+            }
+        }
+        try {
+            topDirectory = topDirectory.toAbsolutePath().toRealPath();
+        } catch (IOException e) {
+            System.err.println("Error computing real path from " + 
topDirectory);

Review Comment:
   Agreed, included IOEx message as well





> Maven config and command line interpolation
> -------------------------------------------
>
>                 Key: MNG-7774
>                 URL: https://issues.apache.org/jira/browse/MNG-7774
>             Project: Maven
>          Issue Type: Task
>          Components: Command Line
>            Reporter: Tamas Cservenak
>            Assignee: Tamas Cservenak
>            Priority: Major
>             Fix For: 3.9.2
>
>
> Note: this issue "mildly follows" functionality done in Maven 4 as part of 
> MNG-7038 and MNG-6303, with partial implementation only (is not full 
> back-port), hence "mild introduction".
> Rationale: many new resolver features are akin to be able to store their 
> configuration and input along SCM tracked Maven project sources. Sadly, 
> currently this is not possible. The two issues targeting Maven4 (MNG-7038 and 
> MNG-6303) with introduction of session and project "topDirectory" and 
> "rootDirectory" properties solve this. Still, Maven 3.9.x does not need all 
> of this.
> So, idea is following:
>  * extend MavenCli to interpolate Maven arguments
>  * introduce two special properties {{session.rootDirectory}} and 
> {{session.topDirectory}} in interpolation. They are special, as they may not 
> be defined, and IF they are not defined, their use in Maven argument 
> interpolation causes error (Maven will not boot).
>  * limit the use of the two new properties to Maven CLI interpolation only. 
> This makes projects relying on Maven CLI interpolation "permeable" between 
> Maven 3.9.x and Maven 4, while all the whistle and bells (exposing this via 
> session or project) will be available in Maven 4 only.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to