Escape hell, part 3: Powershell. Similar to Cmd.exe, but additionally, you need to use '--%' right after the 'mvn' command to stop PS from parsing the parameters any further as PS commands or whatever. The full command would be something like (my local testing example:
mvn --% -pl some-app exec:java -Dexec.mainClass=com.demo.AspectjDemoApplication -Dexec.args="one ""it's OK"" three" --quiet Condensed to the important part: mvn --% (...) -Dexec.args="one ""it's OK"" three" -- Alexander Kriegisch https://scrum-master.de Alexander Kriegisch schrieb am 15.10.2023 11:31 (GMT +07:00): > It seems as if today is not my day. First, I wrote a message in another thread > with tons of typos, making it look as if I am not just bad in typing but > actually unable to speak proper English. Now, I sent an incomplete message not > addressing the actual question. Sorry for that to everyone. > > Let us settle on only using double quotes to enclose arguments containing > spaces. Then, we do not need to escape single quotes and can use them > literally. But we do need to escape nested double quotes. > > In UNIX-like shells like Bash, a double quote is escaped by a backslash: > > -Dexec.args="one \"it's OK\" three" > > In Windows Cmd.exe, a double quote is escaped by another double quote: > > -Dexec.args="one ""it's OK"" three" > > HTH > -- > Alexander Kriegisch > https://scrum-master.de > > > Alexander Kriegisch schrieb am 15.10.2023 11:17 (GMT +07:00): > >> Java CLI program arguments containing spaces are usually enclosed by >> double quotes, so I would recommend to use: >> >> -Dexec.args="one 'number two' three" >> >> This works in both UNIX-like shells (say, Git Bash on Windows) and in the >> Cmd.exe Windows shell, while >> >> -Dexec.args='one "number two" three' >> >> only works in UNIX-like shells, but *not* in Cmd.exe. >> >> -- >> Alexander Kriegisch >> https://scrum-master.de >> >> >> Garret Wilson schrieb am 15.10.2023 05:31 (GMT +07:00): >> >>> Here's a fun one for your weekend. As you know from (almost) the >>> beginning of time we could invoke a Java application using Maven using >>> the Maven Exec Plugin, as in the following (although Maven's `--quiet` >>> may be a recent addition): >>> >>> ```bash >>> mvn exec:java -Dexec.mainClass="com.example.MyApplication" >>> -Dexec.args="test" --quiet >>> ``` >>> >>> This passes a single command-line argument to my Java `main()` method >>> args array: "test". If I want to pass a string with a space, I put it in >>> single quotes, like this: >>> >>> ```bash >>> mvn exec:java -Dexec.mainClass="com.example.MyApplication" >>> -Dexec.args="'foo bar'" --quiet >>> ``` >>> >>> That passes a single string "foo bar" to my application `main()` method >>> args array. >>> >>> Now … what if I want to pass a single string "foo'bar" (note just one >>> single quote in the string) as a single string to my `main()` method >>> args array? is there some way to escape the single quote? The >>> [documention](https://www.mojohaus.org/exec-maven-plugin/java-mojo.html#commandlineArgs) >>> >>> doesn't give any clues. >>> >>> I guess I could look at the Exec Maven Plugin source code (if it's >>> available), but that would take half a day and I've already spent half >>> of today going down other rabbit holes. So I thought I'd ask here to see >>> if anyone knew; otherwise I'll investigate another day when I'm >>> refreshed (or just put a temporary note in my Bash script about this >>> corner case, but that's not really my style). >>> >>> Garret >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >>> For additional commands, e-mail: users-h...@maven.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >> For additional commands, e-mail: users-h...@maven.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org