Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 标签的使用<;命令行参数>;在maven插件appassembler中_Unix_Maven_Plugins_Appassembler - Fatal编程技术网

Unix 标签的使用<;命令行参数>;在maven插件appassembler中

Unix 标签的使用<;命令行参数>;在maven插件appassembler中,unix,maven,plugins,appassembler,Unix,Maven,Plugins,Appassembler,我正在使用maven插件appassembler生成unix脚本。我在它的标签上写了这样的东西: <commandLineArguments> <commandLineArgument>$1</commandLineArgument> <commandLineArgument>$2</commandLineArgument> <commandLineArgument>$3</commandLineArgum

我正在使用maven插件appassembler生成unix脚本。我在它的标签上写了这样的东西:

<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中,不可能通过脚本将参数传递给主类。