Unix 标签的使用<;命令行参数>;在maven插件appassembler中
我正在使用maven插件appassembler生成unix脚本。我在它的标签上写了这样的东西:Unix 标签的使用<;命令行参数>;在maven插件appassembler中,unix,maven,plugins,appassembler,Unix,Maven,Plugins,Appassembler,我正在使用maven插件appassembler生成unix脚本。我在它的标签上写了这样的东西: <commandLineArguments> <commandLineArgument>$1</commandLineArgument> <commandLineArgument>$2</commandLineArgument> <commandLineArgument>$3</commandLineArgum
<commandLineArguments>
<commandLineArgument>$1</commandLineArgument>
<commandLineArgument>$2</commandLineArgument>
<commandLineArgument>$3</commandLineArgument>
</commandLineArguments>
$1
$2
$3
但是,结果脚本显示
$1$2$3“$@”
我不知道最后一个参数来自哪里,因此它重复前3个参数。Mojo的AppAssembler Maven插件生成一个脚本,该脚本总是将提供给脚本的所有命令行参数附加到JVM的启动命令中。因此,如果您什么也不做,那么在用于启动程序的JVM命令中,
“$@”
将是最后一件事
标记用于在
(在我看来)您认为需要添加位置标记以获得传递的参数,因此才需要添加代码段。这两者都是:
关于第二点考虑第二个参数是包含空间字符的文件的名称的情况。如果我像这样为你启动脚本程序
$ bin/foo.sh Document.txt Document\ 2.txt "Copy of Document 3.txt" Doc4.txt
您将看到以下内容通过您提供的配置传递到Java程序:
Document.txt
(全部1美元)文档
($2已展开,但未引用,因此现在重新评估)2.txt
Copy
($3已展开,但未被引用,因此也会重新计算,空格再次被视为参数分隔符)的
文档
3.txt
Document.txt
(现在ARGLIST匹配器正确地提供了所有内容)Document 2.txt
文件3.txt的副本
Doc4.txt
解决办法很简单。停止尝试配置您不需要配置的内容 你能展示完整的pom文件和它的确认,以及你想要实现什么吗?嗨,史蒂夫。谢谢你详细的解释。它按照你的建议工作。那么首先为什么要使用?可能是调用链到真正的Main上的Main(而不是在完成时退出),并且需要传递真正的Main类名。或者您必须设置一些选项等。灵活性是一件好事,而约定优先于配置意味着您不必在需要之前进行配置您使用的appassembler插件的版本是什么?我这样问是因为在版本1.3中,不可能通过脚本将参数传递给主类。