Mojo 的 AppAssembler Maven 插件生成一个脚本,该脚本始终将提供给脚本的所有命令行参数附加到 JVM 的启动命令上。因此,如果您什么都不做,这"$@"
将是用于启动程序的 JVM 命令上的最后一件事。
该标签用于在ARGLIST 匹配器<commandLineArguments>
之前注入额外的命令行参数。
似乎(对我来说)您认为您需要添加位置标记才能让参数通过,因此您要添加的代码段。那是两者:
- 不必要,因为默认情况下插件会生成一个传递所有必需参数的脚本。
- 实际上是一个潜在的错误,因为您配置的内容不能正确处理参数引用和转义。
关于第二点,考虑第二个参数是包含空格字符的文件名的情况。如果我像这样为你启动脚本程序
$ bin/foo.sh Document.txt Document\ 2.txt "Copy of Document 3.txt" Doc4.txt
您实际上会看到以下内容通过您提供的配置传递到您的 Java 程序:
Document.txt
(全部 1 美元)
Document
($2 已扩展,但未引用,因此现在重新评估)
2.txt
Copy
($3 被扩展,但没有被引用,因此也被重新评估,空格再次被视为参数分隔符)
of
Document
3.txt
Document.txt
(现在 ARGLIST 匹配器正确提供了一切)
Document 2.txt
Copy of Document 3.txt
Doc4.txt
解决方案很简单。停止尝试配置您不需要配置的东西!