[ https://issues.apache.org/jira/browse/MNG-7774?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17719154#comment-17719154 ]
ASF GitHub Bot commented on MNG-7774: ------------------------------------- CrazyHZM commented on code in PR #1098: URL: https://github.com/apache/maven/pull/1098#discussion_r1184555983 ########## 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: Would it be easier to troubleshoot the problem if the exception information was printed out here? > 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)