MojoのAppAssemblerMavenプラグインは、スクリプトに提供されたすべてのコマンドライン引数を常にJVMの起動コマンドに追加するスクリプトを生成します。したがって、何もしなかった場合"$@"
、プログラムの開始に使用されるJVMコマンドの最後になります。
この<commandLineArguments>
タグは、ARGLISTマッチャーの前に追加のコマンドライン引数を挿入するために使用されます。
(私には)パラメーターを通過させるために位置マーカーを追加する必要があると思われるため、追加したスニペットです。それは両方です:
- デフォルトでは、プラグインは必要なすべてのパラメーターを渡すスクリプトを生成するため、不要です。
- 構成したものが引数の引用符とエスケープを正しく処理しないため、実際には潜在的なバグです。
2番目の点に関しては、2番目のパラメーターがスペース文字を含むファイルの名前である場合を考えてみてください。私があなたのためにスクリプトを起動すると、そのようにプログラムします
$ 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
解決策は簡単です。構成する必要のないものを構成しようとするのはやめましょう。