3

1つのJavaプロジェクトをMavenに移行し、シェル開始スクリプトを生成するためにAppassembler Mavenプラグイン(バージョン1.3)を使用しています。私の問題は、Javaプログラムのstdoutおよび/または出力をリダイレクトする方法ですか?このAppassemblerのpom.xml構成

        <program>
          <mainClass>com.mycompany.app.App</mainClass>
          <commandLineArguments>
            <commandLineArgument>arg1</commandLineArgument>
            <commandLineArgument>arg2</commandLineArgument>
          </commandLineArguments>
          <name>app</name>
        </program>

生成:

exec "$JAVACMD" $JAVA_OPTS \
  $EXTRA_JVM_ARGUMENTS \
  -classpath "$CLASSPATH" \
  -Dapp.name="app" \
  -Dapp.pid="$$" \
  -Dapp.repo="$REPO" \
  -Dbasedir="$BASEDIR" \
  com.mycompany.app.App \
  arg1 arg2 "$@"

パラメータープレースホルダー($ @)は、開始スクリプトで最後に生成されたトークンです。

4

1 に答える 1

3

この問題の回避策を見つけました。幸い、パラメータプレースホルダーは、生成されたコマンドライン引数と同じ行にあります。したがって、このpom.xml構成は次のとおりです。

<commandLineArguments>
    <commandLineArgument>"$@"</commandLineArgument>
    <commandLineArgument>&gt;&gt;out.log</commandLineArgument>
    <commandLineArgument>2&gt;&amp;1</commandLineArgument>
    <commandLineArgument>#</commandLineArgument>
</commandLineArguments>

スクリプトを生成します:

....
com.mycompany.app.App \
"$@" >>out.log 2>&1 # "$@"

ハッシュはbashのコメントであるため、最後のパラメータープレースホルダーは無視され、このハックがリダイレクトジョブを実行します。

于 2013-01-18T22:10:41.657 に答える